Sobes.tech
Junior — Middle

Hogyan működnek a referencia típusok a memóriában, és miben különböznek az értéktípusoktól?

sobes.tech MI

Válasz az MI-től

A C#-ban két fő típus létezik: értéktípusok (value types) és referencia típusok (reference types).

  • Értéktípusok közvetlenül a memóriában tárolják az adatokat, ahol deklarálva vannak. Például, int, struct. Átadáskor a érték másolódik, és minden változó saját másolatot tartalmaz.

  • Referencia típusok nem az adatokat, hanem egy hivatkozást (mutatót) tárolnak a memória azon területére, ahol az adatok találhatók. Például, class, string. Átadáskor csak a hivatkozás másolódik, nem az objektum, így több változó is ugyanarra az objektumra mutathat.

Példa:

int a = 5;
int b = a; // érték másolata
b = 10;
// az a még mindig 5

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

Így a referencia típusok lehetővé teszik, hogy ugyanazzal az objektummal dolgozzunk különböző változókból, míg az értéktípusok független másolatokat tárolnak az adatokból.