Junior
Care este diferența dintre tipurile de referință și cele de valoare?
sobes.tech AI
Răspuns de la AI
Diferențe în modul de stocare și transmitere a datelor:
-
Tipuri de valoare (Value Types):
- Sunt stocate direct acolo unde au fost declarate (pe stivă sau în interiorul unei instanțe de tip valoare).
- La atribuirea sau transmiterea prin valoare, se creează o copie a valorii.
- Include tipuri primitive (int, float, bool etc.), structuri (struct) și enumerări (enum).
- Sunt sigilate (sealed) și nu pot fi moștenite.
-
Tipuri de referință (Reference Types):
- Sunt stocate în heap. Variabila conține nu valoarea în sine, ci o referință la adresa din heap.
- La atribuirea sau transmiterea prin valoare, se copiază doar referința, nu obiectul în sine.
- Include clase (class), interfețe (interface), delegați (delegate) și array-uri (array).
- Pot suporta moștenirea.
- Colectorul de gunoi gestionează eliberarea memoriei pentru obiectele de tip referință, la care nu mai există referințe active.
// Exemplu de tip de valoare (struct)
struct Point
{
public int X;
public int Y;
}
// Exemplu de tip de referință (class)
class Circle
{
public int Radius;
}
| Caracteristică | Tipuri de valoare | Tipuri de referință |
|---|---|---|
| Locul de stocare | Stivă sau în interiorul unei instanțe de tip valoare | Heap |
| Transfer/Asignare | Copie a valorii | Copie a referinței |
| Moștenire | Nu | Da |
| Gestionarea memoriei | Automată (stivă) | Colector de gunoi |