Junior — Middle
Објасните разлике између процеса распоређивања и паковања објеката, као и између преноса параметара по референци и по вредности у контексту рада са референтним типовима и структурама.
sobes.tech АИ
Одговор од АИ
U C#:
Boxing (pakovanje) — proces pretvaranja vrednosnog tipa (npr. strukture) u referentni objekat (object). Ovo kreira kopiju vrednosti na hrpi.
Unboxing (odpakivanje) — obrnuti proces, izvlačenje vrednosti iz objekta nazad u vrednosni tip.
Primer:
int x = 123; // vrednosni tip
object o = x; // pakovanje
int y = (int)o; // odpakivanje
Prenos parametara:
- Po vrednosti (podrazumevano za vrednosne tipove): vrednost se kopira, promene unutar metode ne utiču na original.
- Po referenci (ref, out): prosleđuje se referenca na promenljivu, promene unutar metode utiču na original.
Za referentne tipove, prosleđuje se kopija reference, ali ne i objekta. Promene na poljima objekta unutar metode su vidljive spolja, ali prepisivanje reference — nije.
Ukratko:
- Pakovanje — obmotavanje vrednosnog tipa u object.
- Otpakivanje — izvlačenje vrednosnog tipa iz object.
- Prenos po vrednosti — kopija podataka.
- Prenos po referenci — prosleđivanje reference na podatke.