Junior
Quelle est la différence entre les types de référence et les types de valeur?
sobes.tech IA
Réponse de l'IA
Différences dans la façon de stocker et de transmettre des données:
-
Types de valeur (Value Types):
- Sont stockés directement là où ils ont été déclarés (dans la pile ou à l'intérieur d'une instance de type valeur).
- Lors de l'assignation ou du passage par valeur, une copie de la valeur est créée.
- Incluent des types primitifs (int, float, bool, etc.), des structures (struct) et des énumérations (enum).
- Sont scellés (sealed) et ne peuvent pas être hérités.
-
Types de référence (Reference Types):
- Sont stockés dans le tas. La variable contient non la valeur elle-même, mais une référence à l'adresse dans le tas.
- Lors de l'assignation ou du passage par valeur, seule la référence est copiée, pas l'objet lui-même.
- Incluent des classes (class), des interfaces (interface), des délégués (delegate) et des tableaux (array).
- Peuvent supporter l'héritage.
- Le ramasse-miettes gère la libération de mémoire des objets de types de référence auxquels il n'y a plus de références actives.
// Exemple de type de valeur (struct)
struct Point
{
public int X;
public int Y;
}
// Exemple de type de référence (class)
class Circle
{
public int Radius;
}
| Caractéristique | Types de valeur | Types de référence |
|---|---|---|
| Lieu de stockage | Pile ou à l'intérieur d'une instance de type valeur | Tas |
| Transfert/Assignation | Copie de la valeur | Copie de la référence |
| Héritage | Non | Oui |
| Gestion de la mémoire | Automatique (pile) | Ramasse-miettes |