Sobes.tech
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.