Sommaire

Typages en C#

On distingue en langage C# les types « valeur » aux types « référence ». Il existe par ailleurs un troisième type nommé « pointeur » qui est toutefois peu utilisé. Il est principalement utilisé lorsque l’on a recours à du code non managé (unsafe code en anglais). Pour comprendre les nuances entre type valeur et type référence, il faut s’intéresser à la gestion de la mémoire. On distingue le tas (heap en anglais) de la pile (stack en anglais) :

  • Un type valeur est stocké directement sur la pile.

  • Un type référence voit sa valeur associée stockée sur le tas et l’adresse de cette valeur stockée sur la pile.

Une solution n’est pas nécessairement meilleure que l’autre. Tout dépend du contexte : stocker la valeur directement sur la pile est considéré comme plus rapide que de la stocker sur le tas et surtout cela ne nécessite pas l’usage ultérieur du ramasse-miettes (garbage collector en anglais).

Une recommandation indique de suivre la règle suivante :

  • Si l’objet est plutôt petit, qu’il est immuable (c’est-à-dire qu’une fois instancié, il ne peut pas être modifié dans sa structure) et qu’il y a de nombreuses instances, alors il peut être judicieux de recourir à un typage valeur.

Rappel ...