Type valeur et référence
Type valeur et référence en C#
Une différence sur les types de données par rapport à d'autres langages de programmation, C# possède deux variétés de types de données : valeur et référence.
Il est important de connaître la différence entre elles pour avoir une application performante et connaître l'impact sur la mémoire.
Type valeur et C#
Pour les variables déclarées avec un type de données intégrées de base (hors string) ou d'une structure créée par vos soins, le type de données sera par valeur. Pour les autres variables, le type de données sera un type référence.
Les variables de type valeur stockent leur contenu dans une zone de mémoire allouée sur la pile. Exemple :
int age = 27 ; // Dès que la variable sort de la portée, les données seront rejetée de la pile.
La pile est efficace mais sa durée de vie est courte avec l'inconvénient d'être moins adaptée au partage de données entre différentes classes.
Un type valeur stocke son contenu dans la mémoire allouée sur la pile. Par exemple, dans ce cas là valeur 42 est stockée dans une zone de mémoire appelée la pile.
Type référence et C#
Un type référence est alloué dans une zone de mémoire appelée tas. Les types référence sont par exemple une instance de classe, un tableau, string...
int[] tvas = new int[3] ;
La mémoire sera libérée que lorsque le système de garbage collection de C# aura déterminé qu'elle n'est plus nécessaire. Les types référence sont plus gourmands en mémoire mais ont l'avantage d'être accessibles depuis d'autres classes.