Sobes.tech
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.