Forskjellen mellom boksing og unboxing i C #

Forfatter: Laura McKinney
Opprettelsesdato: 2 April 2021
Oppdater Dato: 5 Kan 2024
Anonim
COLOR REVEAL Barbie Unboxing Review
Video: COLOR REVEAL Barbie Unboxing Review

Innhold


I C # er alle verditypene hentet fra klasseobjektet. Så en referansevariabel av typeobjekt kan referere til hvilken som helst annen verditype. C # introduserer to metoder for Boxing and Unboxing, som kobler verditype til referansetype. Den grunnleggende forskjellen mellom Boxing og Unboxing er at Boxing er konvertering av verditypen til en objekttype, mens på andre hender betegner begrepet Unboxing konvertering av objekttypen til verditypen. La oss studere de andre forskjellene mellom boksing og unboxing.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningBoksingunboxing
grunn~~POS=TRUNCObjekttype refererer til verditypen.prosess med å hente verdi fra det boksede objektet.
OppbevaringVerdien som er lagret på bunken kopieres til objektet som er lagret i bunkehukommelsen.Gjenstandenes objekter som er lagret i bunkehukommelsen kopieres til den verditypen som er lagret i bunken.
OmdannelseImplisitt konvertering.Eksplisitt konvertering.
Eksempelint n = 24;
objekt ob = n;
int m = (int) ob;


Definisjon av boksing

Boksing er en prosedyre for å konvertere en verditype til en objekttype. Her blir verditypen lagret på bunken, og objekttypen lagres i bunkehukommelsen. Denne konverteringen av verditype til objekttypen er en implisitt konvertering. Du kan direkte tilordne en verdi til et objekt, og C # vil håndtere resten konvertering. La oss forstå boksing med et eksempel.

int i = 24; objekt ob = i; // Sett inn heltalstypen n i objekttype ob. eller objekt ob1 = 21; // her refererer også en objekttype ob1 til en heltallstype

I koden over lagres heltallstypen i som inneholder verdi 24 på stabelen og kopieres til objekttypen ob. En objekttype refererer nå til en heltallverdi. Nå inneholder “int i” også verdien 24 og “objekttypen ob” inneholder også verdi 24, men begge verdiene er uavhengige av hverandre, dvs. hvis du endrer verdien på i, reflekterer den ikke endringen i verdien av ob.


Boksing bruker ekstra minne sammen med ekstra tid. Årsaken er at et nytt objekt, som vil referere til verditypen, må tildele minneplassen på haugen. Deretter overføres verdien til verditypen som er lagret i bunken til ob objekttypen, på bunkehukommelsesstedet.

Definisjon av Unboxing

Baksiden av boksing er unboxing. Unboxing er en konvertering av objekttypen til verditypen. I Unboxing overføres verdien til den boksede objekttypen som er lagret på haugen, til den verditypen som er lagret på bunken. I motsetning til boksing, må avboksen gjøres eksplisitt. Objekttypen blir eksplisitt støpt til verditypen, og verditypen må være den samme som verdien objekttypen viser til. La oss forstå begrepet Unboxing med et eksempel.

int i = 24; objekt ob = i; // Sett inn heltalstypen n i objekttype ob. int j = (int) ob; // Fjern boksen for heltallverdien som er lagret i objekttype ob til heltallstypen y.

Verdien som er lagret i objektoben blir hentet ved å kaste den til den samme typen som objektet refererte til dvs. heltalstypen "j".

Unboxing bruker også mer minne og mer tid. Siden når en objekttype må unboxes, må verdien på den objekttypen som er lagret på haugen, overføres til den nye verditypen som er lagret i bunken. Objekttypen hvis verdi er blitt hentet vil nå være tilgjengelig for søppelinnsamling.

  1. I boksing blir et objekt laget for å referere som en verditype. På den annen side kalles prosessen for å hente verdien tilbake fra det boksede objektet unboxing.
  2. En verditype som er lagret i en stabel, kopieres til objektet som er lagret i bunkehukommelsen. På den annen side, i unboxing, kopieres et objekt som er lagret i heapminnet til en verditype som er lagret i stackminnet.
  3. Boksing er en implisitt konvertering, mens unboxing er en eksplisitt konvertering.

Konklusjon:

Både boksing og unboxing bruker mer tid og minne, og de er beregningsdyktige. De mangler også typesikkerhet og øker kjøretidsomkostningene. Det anbefales alltid å unngå for mye bruk av boksing og unboxing i programmet.