Sobes.tech
Junior — Middle

Vysvětlete rozdíly mezi procesy nasazení a balení objektů, stejně jako mezi předáváním parametrů odkazem a hodnotou v kontextu práce s referenčními typy a strukturami.

sobes.tech AI

Odpověď od AI

V C#:

Boxing (zabalování) — proces převodu hodnotového typu (například struktury) na referenční typ (object). To vytvoří kopii hodnoty na haldě.

Unboxing (rozbalení) — opačný proces, extrakce hodnoty z objektu zpět do typu hodnoty.

Příklad:

int x = 123;          // hodnotový typ
object o = x;         // zabalování
int y = (int)o;       // rozbalení

Předávání parametrů:

  • Po hodnotě (výchozí pro hodnotové typy): hodnota je zkopírována, změny uvnitř metody neovlivní originál.
  • Po odkazu (ref, out): předává se odkaz na proměnnou, změny uvnitř metody ovlivní originál.

Pro referenční typy se předává kopie odkazu, nikoliv objektu. Změny polí objektu uvnitř metody jsou viditelné zvenčí, ale přepsání odkazu — ne.

Shrnutí:

  • Zabalování — obalení hodnotového typu do object.
  • Rozbalování — extrakce hodnotového typu z object.
  • Předání po hodnotě — kopie dat.
  • Předání po odkazu — předání odkazu na data.