Razlika između boksa i unboxinga u C #

Autor: Laura McKinney
Datum Stvaranja: 2 Travanj 2021
Datum Ažuriranja: 5 Svibanj 2024
Anonim
UnPacking Part 10. OTR and DOPE
Video: UnPacking Part 10. OTR and DOPE

Sadržaj


U C #, sve vrste vrijednosti izvode se iz objekta klase. Dakle, referentna varijabla objekta tipa može se odnositi na bilo koju drugu vrstu vrijednosti. C # uvodi dvije metode u Boxing i Unboxing, koje povezuju vrstu vrijednosti s referentnom vrstom. Osnovna razlika između Boxinga i Unboxinga jest da je Boxing pretvaranje vrste vrijednosti u objektni tip, dok se, s druge strane, izraz Unboxing odnosi na pretvaranje tipa objekta u vrijednost vrijednosti. Proučimo ostale razlike između boksa i unboxinga.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbuBoksRaspakirati
Osnovni, temeljniVrsta objekta odnosi se na vrstu vrijednosti.postupak pronalaženja vrijednosti iz objekta u kutiji.
skladištenjeVrijednost pohranjena u stog kopiraju se u objekt pohranjen u heap memoriji.Vrijednost objekata pohranjenih u heap memoriji kopira se u vrstu vrijednosti spremljenu na stoku.
KonverzijaImplicitno pretvaranje.Izričito pretvaranje.
Primjerint n = 24;
objekt ob = n;
int m = (int) ob;


Definicija boksa

Boks je postupak pretvaranja vrste vrijednosti u tip objekta. Ovdje se vrsta vrijednosti sprema u stog, a vrsta objekta sprema se u heap memoriju. Ovo pretvaranje vrste vrijednosti u objektni tip je implicitna konverzija. Objektu možete izravno dodijeliti vrijednost, a C # će obraditi ostatak pretvorbe. Da razumemo Boxing s primjerom.

int i = 24; objekt ob = i; // Unesite tip cijelog broja n u tip objekta ob. ili objekt ob1 = 21; // ovdje se također objektni tip ob1 odnosi na cijeli broj

U gornjem kôdu, cijeli broj i sadrži vrijednost 24 pohranjuje se u stog i kopira se u objektni tip ob. Vrsta objekta sada se odnosi na cjelobrojnu vrijednost. Sada "int i" također sadrži vrijednost 24, a "tip objekta ob" također sadrži vrijednost 24, ali obje vrijednosti su neovisne jedna o drugoj, tj. Ako promijenite vrijednost i, neće odražavati promjenu u vrijednost ob.


Boks troši dodatnu memoriju zajedno s dodatnim vremenom. Razlog je taj što novi objekt, koji će se odnositi na vrijednost vrijednosti, mora rasporediti memorijski prostor na hrpi. Zatim će vrijednost vrste vrijednosti koja je pohranjena u stog prenijeti u tip objekta, na mjesto memorije heap.

Definicija Unboxinga

Naličje boksa je Unboxing. Raspakiranje pretvarača pretvara vrstu objekta u tip vrijednosti. Ako isključite okvir, vrijednost vrste predmeta u kutiji pohranjena na hrpi prenosi se u vrstu vrijednosti koja se sprema u stog. Za razliku od boksa, Unboxing se mora izričito odraditi. Tip objekta izričito je dodijeljen vrsti vrijednosti, a vrsta vrijednosti mora biti jednaka vrijednosti na koju se objekt odnosi. Razjasnimo pojam Unboxing s primjerom.

int i = 24; objekt ob = i; // Unesite tip cijelog broja n u tip objekta ob. int j = (int) ob; // Raspakirajte cijelu vrijednost pohranjenu u vrsti objekta ob na cijeli broj y.

Vrijednost pohranjena u objektu ob pronalazi se tipkom onako kao što se objekt odnosi na, tj., Cijeli broj "j".

Unboxing također troši više memorije i više vremena. Budući da, kada tip objekta mora biti bez kutijice, vrijednost vrste objekta pohranjena na hrpi mora se prenijeti u novi tip vrijednosti koji je pohranjen u snopu. Vrsta objekta čija je vrijednost dohvaćena sada će biti dostupna za odvoz smeća.

  1. U boksu se stvara objekt koji označava vrstu vrijednosti. S druge strane, proces dohvaćanja vrijednosti iz objekta u kutiji naziva se unboxing.
  2. Vrijednost tipa spremljena u stog kopira se u objekt pohranjen u heap memoriji. S druge strane, u raspakiranju se objekt pohranjen u heap memoriji kopira u vrstu vrijednosti koja je pohranjena u memoriji stog.
  3. Boks je implicitna konverzija dok je unboxing eksplicitna konverzija.

Zaključak:

I boks i unboxing troše više vremena i memorije, a računski su skupi. Također im nedostaje sigurnost tipa i povećava radno vrijeme rada. Uvijek se savjetuje izbjegavanje previše korištenja boksa i odbacivanja boksa u programu.