Junior — Middle
Quelle est la différence entre les types de référence et les types de valeur en C# et quelles sont leurs principales différences d'utilisation?
sobes.tech IA
Réponse de l'IA
En C#, les types sont divisés en types de valeur (value types) et types de référence (reference types).
Les types de valeur stockent directement les données. Exemples : int, double, struct. Lors de l'assignation ou du passage à une méthode, la valeur elle-même est copiée, c'est-à-dire qu'une copie indépendante est créée.
Les types de référence stockent une référence à un objet en mémoire (dans le tas). Exemples : class, string, tableaux. Lors de l'assignation, seule la référence est copiée, pas l'objet, donc plusieurs variables peuvent faire référence au même objet.
Principales différences :
- Stockage : types de valeur généralement sur la pile, types de référence dans le tas.
- Copie : les types de valeur sont copiés par valeur, les types de référence par référence.
- Comportement lors de la modification : modifier un type de valeur n'affecte pas les autres copies, modifier un objet de type référence se reflète sur toutes les références.
Exemple :
int a = 5;
int b = a; // copie de la valeur
a = 10; // a restera 5
class Personne { public string Nom; }
Personne p1 = new Personne { Nom = "Иван" };
Personne p2 = p1; // copie de la référence
p2.Nom = "Пётр"; // p1.Nom changera aussi en "Пётр"