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.