In C# è possibile identificare due tipi di variabili: i value types e i reference types: una qualsiasi variabile che dichiariamo all’interno del codice è mutuamente appartenente a uno dei due tipi citati.

Alla maggior parte dei programmatori questa affermazione non provoca particolare interesse: al massimo può provocare un fragoroso: …. e chi se frega ?? Oppure più mestamente provocare confusi ricordi legati alla prima formazione ricevuta su C#.
Infatti usualmente quando si studia il C# questa differenza viene ben spiegata e approfondita, ma poi avendo implicazioni pratiche molto limitate usualmente “si perde il concetto”.
In effetti il programmatore mediamente può assolutamente disinteressarsi di questa differenza, e considerala micragnosa e petulante, ma quando si hanno esigenze di perfomance….. allora proprio lì si va a finire !
Inoltre…… non è interessante capire come “funziona il giocattolo” ??
Dunque: torniamo ai value types e i reference types.
Quando il programma viene eseguito viene allocato un certo spazio di RAM delegato a contenere i dati necessari per l’esecuzione: all’interno di questo spazio vengono riservate alcune zone che hanno compiti ben precisi e stabiliti.
Le zone delegate a contenere il valore delle variabili dichiarate all’interno del programma sono due, e sono chiamate managed heap e lo stack.
Continue reading
