Sobes.tech
Junior — Middle

Ako sa líšia spôsoby ukladania odkazových a hodnotových typov v pamäti v C#?

sobes.tech AI

Odpoveď od AI

V jazyku C# sa typy hodnot, ako int, struct, bool, ukladajú na zásobník (stack) alebo priamo vo vnútri objektu, ak sú poľami referenčného typu. Obsahujú samotné dáta.

Referenčné typy, ako triedy (class), sa ukladajú na halde (heap). Premenná referenčného typu neobsahuje dáta sama, ale odkaz (ukazovateľ) na oblasť pamäti na halde, kde sú uložené dáta objektu.

Príklad:

int a = 5; // 'a' ukladá hodnotu 5 na zásobník
MyClass obj = new MyClass(); // 'obj' ukladá odkaz na objekt na halde

Pri prenose typov hodnoty sa kopíruje hodnota, pri prenose referenčných typov sa kopíruje odkaz na objekt.