Sobes.tech
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 "Пётр"