Junior — Middle
Hogyan különböznek a referencia- és értéktípusok memória szerinti tárolási módjai C#-ban?
sobes.tech MI
Válasz az MI-től
C#-ban az értéktípusok, mint például az int, struct, bool, a veremben (stack) vagy közvetlenül az objektumon belül tárolódnak, ha referencia típusú mezők. Maga az adatokat tartalmazzák.
A referencia típusok, például osztályok (class), a heapen tárolódnak. A referencia típusú változó nem az adatokat tartalmazza, hanem egy hivatkozást (mutatót) arra a memória területre a heapen, ahol az objektum adatai találhatók.
Példa:
int a = 5; // az 'a' a veremben tárolja az 5 értéket
MyClass obj = new MyClass(); // az 'obj' egy hivatkozást tartalmaz egy heapen lévő objektumra
Így, értéktípusok átadásakor az érték másolódik, referencia típusok esetén pedig a hivatkozás az objektumra másolódik.