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.