Ancora sui Generics

Nel mio ultimo post si è parlato di Generics. Tra i commnenti Vincenzo Foggia chiedeva quali sono le differenze rispetto ai Template del C++.

La differenza, sebbene poco visibile al programmatore, c'è.

In C++ una classe template viene convertita nella rispettiva classe che opera sul tipo usato come parametro durante la compilazione. In pratica tutte le occorrenze di Stack vengono convertite dal compilatore effettuando di fatto una sostituzione nel codice.

In C# invece i tipi generics vengono gestiti durante l'esecuzione, quando il jitter si trova a dover eseguire una classe Stack crea la classe stack che opera sul tipo int in codice IL e ogni volta che trova del nuovo codice che opera sullo stesso tipo (Stack) riutilizzerà quello generato in precedenza.

Quindi il runtime crea un unico tipo specializzato per ogni classe generics che ha come parametro un value type (uno per Stack uno per Stack ecc…). E per i reference type?

Per i reference type il runtime condivide un'unica copia per tutti…alla fine "puntatori sono" ;-)

Print | posted on sabato 5 marzo 2005 19.07

Comments on this post

# re: Ancora sui Generics

Requesting Gravatar...
Grazie per il chiarimento
Left by Vincenzo Foggia on mar 06, 2005 12.18

# re:Ancora sui Generics

Requesting Gravatar...
Ancora sui Genericsooeess
Left by 气味检测仪 on giu 16, 2005 11.06

# re:Ancora sui Generics

Requesting Gravatar...
Ancora sui Genericsooeess
Left by 红外热像仪 on lug 11, 2005 6.00

Your comment:

 (will show your gravatar)
 
Please add 7 and 6 and type the answer here: