Priporočena, 2021

Izbira Urednika

Razlika med Boxing in Unboxing v C #

V C # so vsi tipi vrednosti izpeljani iz predmeta razreda. Torej se lahko referenčna spremenljivka tipa object nanaša na kateri koli drug tip vrednosti. C # uvaja dve metodi za Boxing in Unboxing, ki povezuje vrsto vrednosti z referenčno vrsto. Osnovna razlika med Boxing in Unboxing je, da je Boxing pretvorba tipa vrednosti v tip objekta, medtem ko se na drugi strani izraz Unboxing nanaša na pretvorbo tipa objekta v tip vrednosti. Preučimo druge razlike med Boxingom in Unboxingom.

Primerjalna tabela

Podlaga za primerjavoBoksUnboxing
OsnovnoTip objekta se nanaša na vrsto vrednosti.proces pridobivanja vrednosti iz predmetov v boksu.
ShranjevanjeVrednost, shranjena v skladu, se kopira v objekt, shranjen v pomnilniku kopice.Vrednost objekta, shranjena v pomnilniku kopice, se kopira v tip vrednosti, ki je shranjen v skladu.
PretvorbaImplicitna pretvorba.Eksplicitna pretvorba.
Primerint n = 24;
objekt ob = n;
int m = (int) ob;

Definicija boksa

Boks je postopek pretvorbe vrste vrednosti v tip objekta. Tukaj je tip vrednosti shranjen v skladu in tip objekta je shranjen v pomnilniku kopice. Ta pretvorba vrste vrednosti v tip objekta je implicitna pretvorba. Objektu lahko neposredno dodelite vrednost, C # pa bo obravnaval ostalo konverzijo. Spoznajmo boks s primerom.

 int i = 24; objekt ob = i; // Vnesemo celo število tipa n v tip objekta ob. ali predmet ob1 = 21; // Tukaj se tudi tip objekta ob1 nanaša na celoštevilčni tip 

V zgornji kodi je celoštevilčni tip i, ki vsebuje vrednost 24, shranjen v skladu in se kopira v tip objekta ob. Tip objekta se zdaj nanaša na celo število. Sedaj vsebina »int i« vsebuje tudi vrednost 24 in »tip objekta ob« vsebuje tudi vrednost 24, vendar sta obe vrednosti neodvisni drug od drugega, tj. Če spremenite vrednost i, ne bo odražala spremembe v vrednost ob.

Boks porabi dodaten spomin skupaj z dodatnim časom. Razlog za to je, da mora nov objekt, ki se bo nanašal na tip vrednosti, dodeliti pomnilniški prostor na kopici. Nato se vrednost vrste vrednosti, ki je shranjena v skladu, prenese v ob objektni tip, na mesto pomnilnika kopice.

Opredelitev Unboxinga

Obrnjenje Boxinga je Unboxing. Unboxing je pretvorba tipa objekta v tip vrednosti. V Unboxingu se vrednost boksiranega tipa objekta, ki je shranjena na kopici, prenese na vrednost, ki je shranjena v skladu. Za razliko od Boxinga je treba Unboxing izvesti izrecno. Tip objekta je izrecno oddan v tip vrednosti, tip vrednosti pa mora biti enak vrednosti, na katero se nanaša tip objekta. Razumimo pojem Unboxinga s primerom.

 int i = 24; objekt ob = i; // Vnesemo celo število tipa n v tip objekta ob. int j = (int) ob; // Unbox vrednost celega števila, ki je shranjena v tipu objekta ob do integer tipa y. 

Vrednost, shranjena v predmetu ob, se pridobi tako, da jo vrnemo v tip, ki je enak kot objekt, ki se nanaša na tj. Celo število tipa "j".

Unboxing porabi tudi več pomnilnika in več časa. Ker, ko mora biti tip objekta odstranjen, je treba vrednost tipa objekta, ki je shranjena v kopici, prenesti v novo vrsto vrednosti, shranjeno v skladu. Tip objekta, katerega vrednost je bila pridobljena, bo zdaj na voljo za zbiranje smeti.

Ključne razlike med boksom in unboxingom

  1. Pri boksu se objekt nanaša na vrsto vrednosti. Po drugi strani pa se proces pridobivanja vrednosti nazaj iz zaokroženega predmeta imenuje unboxing.
  2. Tip vrednosti, shranjen v skladu, se kopira v objekt, shranjen v pomnilniku kopice. Po drugi strani pa se pri unboxingu objekt, shranjen v pomnilniku kopice, kopira v tip vrednosti, ki je shranjen v pomnilniku skladov.
  3. Boxing je implicitna konverzija, medtem ko je unboxing izrecna konverzija.

Sklep:

Tako boks in unboxing porabita več časa in pomnilnika in sta računsko draga. Prav tako jim manjka tipska varnost in povečuje režijske stroške. Vedno je priporočljivo, da se izogibate preveč uporabe boksa in unboxinga v programu.

Top