Sobes.tech
Junior — Middle

Magyarázza el a különbségeket az olyan adattípusok között, amelyek hivatkozásokat tárolnak, és azok között, amelyek értékeket.

sobes.tech MI

Válasz az MI-től

C#-ban az adattípusokat értéktípusokra (value types) és referencia típusokra (reference types) osztják.

  • Értéktípusok közvetlenül tárolják az adatokat. Átadás vagy hozzárendelés esetén maga az érték másolódik. Példák: int, double, struct, bool.
  • Referencia típusok egy memória területre mutató hivatkozást tárolnak, ahol az adatok találhatók. Hozzárendeléskor csak a hivatkozás másolódik, nem az adatok. Példák: class, string, tömbök.

Példa:

int a = 5;
int b = a; // b egy másolatot kap az értékről, ami 5
b = 10;
// az a még mindig 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // p2 és p1 ugyanarra az objektumra mutat
p2.Name = "Пётр";
// p1.Name szintén "Пётр" lesz

Így a referencia típusok változásai minden olyan hivatkozásban megjelennek, ami ugyanarra az objektumra mutat, míg az értéktípusok függetlenek a másolás után.