Sobes.tech
Junior — Middle

Quelles sont les méthodes pour allouer des types significatifs dans la mémoire gérée (tas) ?

sobes.tech IA

Réponse de l'IA

En C#, les types valeur (struct) sont généralement placés sur la pile, mais ils peuvent également être placés sur le tas géré de différentes manières :

  1. Encapsulation dans un type de référence — si le type valeur est un champ d'une classe (type de référence), il est stocké à l'intérieur de l'objet sur le tas.

  2. Utilisation de types valeur boxed — lors de l'emballage (boxing) d'un type valeur, il est copié dans un objet sur le tas.

  3. Utilisation de new pour créer une instance de struct à l'intérieur d'une classe ou d'un tableau — les tableaux de types valeur et les champs struct à l'intérieur des classes sont placés sur le tas.

Exemple :

struct Point { public int X, Y; }

class Container {
    public Point p; // Point est stocké sur le tas comme partie de l'objet Container
}

Container c = new Container(); // l'objet c et le champ p sont sur le tas

object o = c.p; // boxing : copie p sur le tas comme objet

Ainsi, les types valeur peuvent se trouver sur le tas s'ils font partie d'un type de référence ou s'ils sont empaquetés.