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.