Sobes.tech
Junior — Middle

Puteți explica în ce constă diferența dintre tipurile de referință și cele de valoare în limbajul C#?

sobes.tech AI

Răspuns de la AI

În C#, tipurile de date sunt împărțite în tipuri de valoare (value types) și tipuri de referință (reference types).

  • Tipurile de valoare stochează datele direct. La atribuirea sau transmiterea către o metodă, valoarea este copiată. Exemple: int, double, struct.
  • Tipurile de referință stochează o referință către zona de memorie unde se află datele. La atribuire, se copiază doar referința, nu datele în sine. Exemple: class, string, array-uri.

Exemplu:

int a = 5;
int b = a; // b primește o copie a valorii 5
b = 10; // a rămâne 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 și p1 fac referire la același obiect
p2.Name = "Bob"; // acum p1.Name este și "Bob"

Astfel, modificările în tipurile de referință printr-o variabilă se reflectă în toate referințele, în timp ce în tipurile de valoare nu.