"Legg til en dobbel og en Integer bruker Obj klassen Dim ob Som Obj = Ny Obj (10,125, 2005) Console.WriteLine (CTast (ob.V1, Double) + CTast (ob.V2, Integer))
"Legg til en dobbel og en Integer bruker Gen klassen Dim gb Som New Gen (Of Double, heltall) (10,125, 2005) Console.WriteLine (gb.V1 + gb.V2)
//C #
//Legg to strenger bruker Obj klassen Obj oa = new Obj ("Hello", "World!"); Console.WriteLine ((string) oa.t + (string) oa.
u);
//Legg to strenger bruker Gen klassen
Gen GA = ny Gen ("Hello," , "Verden!"); Console.WriteLine (ga.t + ga.u);
//Legg en dobbel og en int bruker Obj klassen Obj ob = new Obj (10,125, 2005); Console.WriteLine ((dobbel) ob.t + (int) ob.u);
//Legg en dobbel og en int bruker Gen klassen
Gen gb = new Gen (10,125 2005); Console.WriteLine (gb.t + gb.u);
Hvis du kjører denne koden i en konsoll program, obj og Gen klasser produsere akkurat de samme resultatene.
Men koden som bruker Gen klassen faktisk fungerer raskere fordi det ikke krever boksing og unboxing til og fra Object-klassen. (Boksing og unboxing er omtalt i avsnittet "Hva er Boxing og Unboxing?" Senere i dette kapitlet.) I tillegg vil utviklere ha en mye lettere tid med Gen klassen. Først ville utviklerne ikke å kaste manuelt fra Object klassen til de riktige typene. For det andre ville skrive feil bli fanget ved kompilering heller enn under kjøring.
For å demonstrere at nytte, bør du vurdere følgende kode, som inneholder en feil (vist i fet skrift):
'VB
"Legg til en dobbelseng og en Integer bruker Gen klassen Dim gb Som New Gen (Of Double, Integer) (10,125, 2005) Console.WriteLine (gb.V1 + gb.V2)
"Legg til en dobbelseng og en Integer bruker Obj klassen Dim ob Som Obj = Ny Obj (10,125, 2005) Console.WriteLine (CTast (ob.V1, Integer) + CTast (ob.V2, Integer))
//C #
//Legg en dobbel og en int bruker Gen klasse
Gen gc = new Gen (10,125, 2005); Console.WriteLine (gc.t + gc.
u);
//Legg en dobbel og en int bruker Obj klassen Obj oc = new Obj (10,125, 2005); Console.WriteLine ((int) oc.t + (int) oc.u);
Den siste linjen i koden prøven inneholder en feil-the oc.V1 verdi (oc.t i C #) er støpt til en int i stedet for til en dobbel. Dessverre, vil kompilatoren ikke ta feil. I stedet, i C #, er en run-time unntak kastes når runtime forsøker å kaste en dobbe