Sobes.tech
Junior — Middle

Cum diferă modalitățile de stocare a tipurilor de date referință și de valoare în memorie în C#?

sobes.tech AI

Răspuns de la AI

În C#, tipurile de valoare, cum ar fi int, struct, bool, sunt stocate în stivă (stack) sau direct în interiorul obiectului dacă sunt câmpuri ale unui tip de referință. Ele conțin datele în sine.

Tipurile de referință, cum ar fi clasele (class), sunt stocate în heap. Variabila de tip de referință nu conține datele în sine, ci o referință (pointer) către zona de memorie din heap unde sunt stocate datele obiectului.

Exemplu:

int a = 5; // 'a' stochează valoarea 5 în stivă
MyClass obj = new MyClass(); // 'obj' stochează o referință la un obiect în heap

Prin urmare, la transmiterea tipurilor de valoare se copiază valoarea, iar la transmiterea tipurilor de referință se copiază referința către obiect.