Junior — Middle
Explicați diferențele dintre procesele de implementare și împachetare a obiectelor, precum și între transmiterea parametrilor prin referință și prin valoare în contextul lucrului cu tipuri de referință și structuri.
sobes.tech AI
Răspuns de la AI
În C#:
Boxing (ambalare) — procesul de conversie a unei valori de tip (de exemplu, o structură) într-un obiect de tip referință (object). Acest lucru creează o copie a valorii pe heap.
Unboxing (dezambalare) — procesul invers, extragerea valorii din obiect înapoi în tipul de valoare.
Exemplu:
int x = 123; // tip de valoare
object o = x; // ambalare
int y = (int)o; // dezambalare
Transmiterea parametrilor:
- Pe valoare (implicit pentru tipurile de valoare): valoarea este copiată, modificările din metodă nu afectează originalul.
- Pe referință (ref, out): se transmite referința la variabilă, modificările din metodă afectează originalul.
Pentru tipurile de referință, se transmite o copie a referinței, dar nu a obiectului. Modificările câmpurilor obiectului din metodă sunt vizibile din exterior, dar reasignarea referinței — nu.
Rezumat:
- Ambalare — împachetarea unui tip de valoare într-un object.
- Dezambalare — extragerea tipului de valoare dintr-un object.
- Transmitere pe valoare — copie a datelor.
- Transmitere pe referință — transmiterea referinței către date.