Razlika med boksom in unboxingom v C #

Avtor: Laura McKinney
Datum Ustvarjanja: 2 April 2021
Datum Posodobitve: 5 Maj 2024
Anonim
Keto Diet vs Atkins Diet - Which Is Better?
Video.: Keto Diet vs Atkins Diet - Which Is Better?

Vsebina


V C # so vse vrste vrednosti izpeljane iz predmeta razreda. Torej se lahko referenčna spremenljivka tipa tipa nanaša na katero koli drugo vrsto vrednosti. C # uvaja dve metodi Boxing in Unboxing, ki povezuje vrsto vrednosti z referenčnim tipom. Osnovna razlika med Boxingom in Unboxingom je, da Boxing pretvarja vrsto vrednosti v objektni tip, medtem ko se po drugi strani izraz Unboxing nanaša na pretvorbo vrste predmeta v vrednostno vrsto. Preučimo še druge razlike med Boxingom in Unboxingom.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavoBoksOdklepanje
OsnovniVrsta predmeta se nanaša na vrsto vrednosti.postopek pridobivanja vrednosti iz predmeta v okencu.
SkladiščenjeVrednost, shranjena v sveženju, se kopira v predmet, shranjen v pomnilniškem paketu.Vrednost predmetov, shranjenih v pomnilniškem skladišču, se kopira v vrsto vrednosti, ki je shranjena v skladovnici.
PretvorbaNeizmerna pretvorba.Izrecna pretvorba.
Primerint n = 24;
predmet ob = n;
int m = (int) ob;


Opredelitev boksa

Boksanje je postopek pretvorbe vrednosti vrednosti v objektni tip. Tu je vrsta vrednosti shranjena v sveženju, vrsta predmeta pa je shranjena v heap pomnilniku. Ta pretvorba vrednosti vrednosti v objektni tip je implicitna pretvorba. Predmetu lahko neposredno dodelite vrednost, C # pa bo obdelal preostalo pretvorbo. Razumejmo boks s primerom.

int i = 24; predmet ob = i; // Polje vrste celo število n v tip objekta ob. ali predmet ob1 = 21; // tudi tukaj vrsta predmeta ob1 se nanaša na celo število

V zgornji kodi je celo število tipa i, ki vsebuje vrednost 24, shranjeno v zlaganje in je kopirano v objektni tip ob. Vrsta predmeta se zdaj nanaša na celo število. Zdaj tudi "int i" vsebuje tudi vrednost 24 in "tip objekta ob" tudi vrednost 24, vendar sta obe vrednosti neodvisni med seboj, tj. Če spremenite vrednost i, ne bo odražal spremembe v vrednost ob.


Boks porabi dodaten pomnilnik skupaj z dodatnim časom. Razlog je v tem, da mora nov objekt, ki se bo nanašal na vrsto vrednosti, dodeliti pomnilniški prostor na kopici. Nato bo vrednost vrste vrednosti, ki je shranjena v sveženju, prenesena v tip objekta na lokaciji pomnilniškega vira.

Opredelitev Unboxinga

Hrbtna stran Boxinga je Unboxing. Unboxing je pretvorba vrste predmeta v vrednost vrednosti. V primeru Unboxing vrednost vrste predmetov, ki so shranjeni v kopici, se prenese v vrsto vrednosti, ki je shranjena v sveženju. Za razliko od boksa je Unboxing treba izrecno izvesti. Tip predmeta je izrecno dodeljen vrsti vrednosti in tip vrednosti mora biti enak vrednosti, na katero se sklicuje tip predmeta. Poglejmo koncept Unboxing s primerom.

int i = 24; predmet ob = i; // Polje vrste celo število n v tip objekta ob. int j = (int) ob; // Odpakirajte celoštevilčno vrednost, shranjeno v vrsti predmeta ob na celo število tipa y.

Vrednost, shranjena v objektu ob, se pridobi z vnosom vrste, ki je enaka tistemu, ki se nanaša na celo število tipa "j".

Odpakiranje porabi tudi več pomnilnika in več časa. Ker mora biti tip predmeta, ki ga je treba razpakirati, vrednost vrste predmeta, shranjene v kopici, prenesti v novo vrsto vrednosti, ki je shranjena v skladovnici. Vrsta predmeta, katerega vrednost je bila pridobljena, bo zdaj na voljo za odvoz smeti.

  1. Pri boksu je predmet narejen kot vrednostni tip. Po drugi strani pa se postopek pridobivanja vrednosti iz predmeta v okencu imenuje unboxing.
  2. Vrednostni tip, shranjen v sveženju, se kopira v objekt, shranjen v heap spominu. Po drugi strani pa se pri odstranjevanju sporočil objekt, shranjen v heap spominu, kopira v vrsto vrednosti, ki je shranjena v pomnilniku skladov.
  3. Boks je implicitna konverzija, medtem ko je razžarjanje eksplicitna konverzija.

Zaključek:

Tako boks kot unboxing zahtevata več časa in spomina, poleg tega sta računsko draga. Prav tako jim primanjkuje varnosti tipa in povečuje čas obratovanja. Vedno se priporoča, da se v programu ne boš preveč uporabljal boksa in razpakiranja.