Forskellen mellem boksning og afboksning i C #

Forfatter: Laura McKinney
Oprettelsesdato: 2 April 2021
Opdateringsdato: 5 Kan 2024
Anonim
Quotes, prices, stats of Alpha cards, boosters, sealed boxes and MTG 12/2021 editions
Video.: Quotes, prices, stats of Alpha cards, boosters, sealed boxes and MTG 12/2021 editions

Indhold


I C # er alle værdityperne afledt af klasseobjektet. Så en referencevariabel af typeobjekt kan henvise til enhver anden værditype. C # introducerer to metoder til boksning og afboksning, som knytter værditype til referencetype. Den grundlæggende forskel mellem boksning og afboksning er, at boksning er konvertering af værditypen til en objekttype, hvorimod udtrykket Unboksing på andre hænder henviser til konvertering af objekttypen til værdienstypen. Lad os studere de andre forskelle mellem boksning og unboxing.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningBoksningUnboxing
GrundlæggendeObjekttype refererer til værditypen.proces med at hente værdi fra det boksede objekt.
OpbevaringDen værdi, der er gemt på stakken, kopieres til det objekt, der er gemt i bunkehukommelsen.Objektets værdi, der er gemt i bunkehukommelsen, kopieres til den værktype, der er gemt på stakken.
KonverteringImplicit konvertering.Eksplicit konvertering.
Eksempelint n = 24;
objekt ob = n;
int m = (int) ob;


Definition af boksning

Boksning er en procedure for konvertering af en værditype til en objekttype. Her gemmes værditypen på stakken, og objekttypen gemmes i bunkehukommelsen. Denne konvertering af værditype til objekttypen er en implicit konvertering. Du kan direkte tildele en værdi til et objekt, og C # håndterer resten konvertering. Lad os forstå boksning med et eksempel.

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

I ovenstående kode gemmes heltalstypen i, der indeholder værdi 24, på stakken og kopieres til objekttypen ob. En objekttype refererer nu til en heltalværdi. Nu indeholder "int i" også værdi 24 og "objekttype ob" indeholder også værdi 24, men begge værdier er uafhængige af hinanden, dvs. hvis du ændrer værdien på i, afspejler den ikke ændringen i værdi af ob.


Boksning bruger ekstra hukommelse sammen med ekstra tid. Årsagen er, at et nyt objekt, der vil henvise til værditypen, skal allokere hukommelsesområdet på dyngen. Derefter overføres værdien af ​​den værditype, der er gemt på stakken, til ob objekttypen, på heap-hukommelsesplacering.

Definition af Unboxing

Bagsiden af ​​boksen er unboxing. Unboxing er en konvertering af objekttypen til værdienstypen. I Unboxing overføres værdien af ​​den boksede objekttype, der er gemt på dyngen, til den værditype, der er gemt på stakken. I modsætning til boksning skal unboxing udføres eksplicit. Objekttypen er eksplicit kastet til værdienstypen, og værdienstypen skal være den samme som den værdi, objekttypen henviser til. Lad os forstå begrebet Unboxing med et eksempel.

int i = 24; objekt ob = i; // Box heltalstypen n i objekttype ob. int j = (int) ob; // Fravælg heltalværdien, der er gemt i objekttype ob til heltalstype y.

Den værdi, der er gemt i objektob, hentes ved at kaste den til den samme type som objektet henviste til, dvs. heltalstype “j”.

Unboxing bruger også mere hukommelse og mere tid. Da en objekttype skal afbokses, skal værdien af ​​den objekttype, der er gemt på dyngen, overføres til den nye værditype, der er gemt på stakken. Den objekttype, hvis værdi, der er hentet, er nu tilgængelig til opsamling af skrald.

  1. I boksning oprettes et objekt til at referere til som en værditype. På den anden side kaldes processen med at hente værdien tilbage fra det boksede objekt unboxing.
  2. En værditype, der er gemt på en stak, kopieres til det objekt, der er gemt i bunkehukommelsen. På den anden side, i unboxing, kopieres et objekt, der er gemt i bunkehukommelsen, til en værditype, der er gemt i stakhukommelsen.
  3. Boxing er en implicit konvertering, mens unboxing er en eksplicit konvertering.

Konklusion:

Både boksning og unboxing forbruger mere tid og hukommelse, og de er beregningsmæssigt dyre. De mangler også typesikkerhed og øger drifttiden overhead. Det tilrådes altid at undgå for meget brug af boksning og unboxing i programmet.