du er nødt til å følge denne trinn Først undersøke følgende klasser. Klasser Obj og Gen utføre nøyaktig de samme oppgavene, men Obj bruker Object klassen for å muliggjøre noen form for å bli lagret i sitt felt, mens Gen bruker generics:
'VB
Klasse Obj
Offentlig V1 Som Object
Offentlig V2 As Object
Public Sub New (ByVal _V1 As Object, ByVal _V2 As Object) V1 = _V1
V2 = _V2
End Sub
End Class
Klasse Gen (Of T, U) Offentlig V1 Som T Public V2 Som U
Public Sub New (ByVal _V1 Som T, ByVal _V2 som U) V1 = _V1
V2 = _V2
End Sub
End Class
//C #
klasse Obj
{
offentlig Object t;
offentlig Object u;
offentlig Obj (Object _t, Objekt _u)
{
t = _t;
u = _u;
}
}
klasse Gen
{
offentlig T t;
offentlig U u;
offentlig Gen (T _t, U _u)
{
t = _t;
u = _u;
}
}
Som du kan se, har Obj klasse to medlemmer av typen Object.
Gen klasse har to felt medlemmer av type T og U. forbruker koden avgjør hvilke typer for T og U. Avhengig av hvordan forbruker koden bruker Gen klassen, kan T og U være en streng, en int, en egendefinert klasse, . eller en kombinasjon av disse
Det er en betydelig begrensning til å skape en generisk klasse (uten begrensninger, som drøftet i avsnittet "Slik bruker begrensninger," senere i dette kapittelet): Generic koden er gyldig bare hvis den kompilerer for stadig y mulig konstruert forekomst av generiske, enten et Int, en snor, eller en hvilken som helst annen klasse.
I hovedsak, er du begrenset til de mulighetene av basen Object klassen når du skriver generisk kode. Derfor kan du ringe toString eller GetHashCode metode innen klassen din, men du kan ikke bruke + operatør eller> operatør. De samme begrensningene ikke gjelder for forbruker kode fordi den forbruker kode erklærer en bestemt type for den generiske.
Hvordan Konsumere en generisk type
Når du bruker en generisk type, må du angi typene for alle generika brukt.
Betrakt følgende Console programkode, som bruker Gen og obj klasser:
'VB
' Legg to strenger bruker Obj klassen
Dim oa Som Obj = Ny Obj ("Hello", "World!") Console.WriteLine (CTast (oa.V1, String) + CTast (oa.V2, String))
'Legg to strenger bruker Gen klassen
Dim ga Som New