Sobes.tech
Junior — Middle

Cum funcționează tipurile de date de referință în memorie și cum diferă de cele de valoare?

sobes.tech AI

Răspuns de la AI

În C# există două tipuri principale de date: tipuri de valoare (value types) și tipuri de referință (reference types).

  • Tipurile de valoare stochează datele direct în memoria unde sunt declarate. De exemplu, int, struct. La atribuție, se copiază valoarea, iar fiecare variabilă păstrează propria copie.

  • Tipurile de referință stochează în variabilă nu datele în sine, ci o referință (pointer) către zona de memorie unde sunt plasate datele. De exemplu, class, string. La atribuție, se copiază doar referința, nu obiectul, astfel mai multe variabile pot indica același obiect.

Exemplu:

int a = 5;
int b = a; // copie a valorii
b = 10;
// a rămâne 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // copie a referinței
p2.Name = "Пётр";
// p1.Name de asemenea "Пётр", deoarece p1 și p2 indică același obiect

Astfel, tipurile de referință permit lucrul cu același obiect din diferite variabile, în timp ce tipurile de valoare stochează copii independente ale datelor.