Sobes.tech
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