Skillnaden mellan Boxning och Unboxing i C #

Författare: Laura McKinney
Skapelsedatum: 2 April 2021
Uppdatera Datum: 5 Maj 2024
Anonim
(1 of 2) Electricity and Magnetism - Review of All Topics - AP Physics C
Video: (1 of 2) Electricity and Magnetism - Review of All Topics - AP Physics C

Innehåll


I C # härleds alla värdetyper från klassobjektet. Så, en referensvariabel av typobjekt kan hänvisa till vilken annan värdetyp som helst. C # introducerar två metoder för Boxning och Unboxing, som länkar värdetyp till referenstypen. Den grundläggande skillnaden mellan Boxning och Unboxing är att Boxing är konvertering av värdetyp till en objekttyp, medan termen Unboxing å andra sidan hänför sig till konvertering av objekttyp till värdetyp. Låt oss studera de andra skillnaderna mellan Boxning och Unboxing.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseBoxninguppackning
GrundläggandeObjekttyp avser värdetyp.process för att hämta värde från det boxade objektet.
LagringVärdet lagrat på bunten kopieras till objektet som lagras i heapminnet.Objektvärdet som lagras i högminnet kopieras till den värdetyp som lagras i stacken.
OmvandlingImplicit konvertering.Explicit konvertering.
Exempelint n = 24;
objekt ob = n;
int m = (int) ob;


Definition av Boxning

Boxning är en procedur för att konvertera en värdetyp till en objekttyp. Här lagras värdetypen på bunten och objekttypen lagras i högminnet. Denna konvertering av värdetyp till objekttypen är en implicit omvandling. Du kan direkt tilldela ett värde till ett objekt, och C # hanterar restenkonvertering. Låt oss förstå Boxning med ett exempel.

int i = 24; objekt ob = i; // Ruta heltalstypen n till objekttyp ob. eller objekt ob1 = 21; // här hänvisar också en objekttyp ob1 till en heltalstyp

I koden ovan lagras heltalstypen som innehåller värde 24 på bunten och kopieras till objekttypen ob. En objekttyp hänvisar nu till ett heltalvärde. Nu innehåller "int i" också värdet 24 och "objekttypen ob" innehåller också värdet 24, men båda värdena är oberoende av varandra, dvs om du ändrar värdet på i, kommer det inte att återspegla förändringen i värde på ob.


Boxning förbrukar extra minne tillsammans med extra tid. Anledningen är att ett nytt objekt, som kommer att hänvisa till värdetyp, måste tilldela minnesutrymmet på högen. Därefter överförs värdet på den värdetyp som lagras i bunten till ob objekttypen, på heapminnesplatsen.

Definition av Unboxing

Baksidan av Boxning är Unboxing. Unboxing är en konvertering av objekttyp till värdetyp. I Unboxing överförs värdet på den boxade objekttyp som lagras på högen till värdetypen som är lagrad på stacken. Till skillnad från Boxning måste Unboxing göras uttryckligen. Objekttypen kastas uttryckligen till värdetypen, och värdetypen måste vara densamma som värdet som objekttypen refererar till. Låt oss förstå begreppet Unboxing med ett exempel.

int i = 24; objekt ob = i; // Ruta heltalstypen n till objekttyp ob. int j = (int) ob; // Avmarkera heltalsvärdet som är lagrat i objekttyp ob till heltalstyp y.

Värdet lagrat i objektobet hämtas genom att kasta det till samma typ som objektet hänvisade till dvs heltalstyp "j".

Upplåsning kräver också mer minne och mer tid. Eftersom, när en objekttyp måste avmarkeras, måste värdet på den objekttyp som lagras på högen överföras till den nya värdetyp som lagras i bunten. Den objekttyp vars värde som har hämtats kommer nu att finnas tillgängligt för skräpuppsamling.

  1. I boxning görs ett objekt att referera till som en värdetyp. Å andra sidan kallas processen för att hämta värdet tillbaka från det boxade objektet unboxing.
  2. En värdetyp som lagras i en bunt kopieras till objektet lagrat i heapminnet. Å andra sidan, i unboxing, kopieras ett objekt som lagras i heapminnet till en värdetyp som lagras i stackminnet.
  3. Boxning är en implicit konvertering medan unboxing är en uttrycklig konvertering.

Slutsats:

Både boxning och unboxing förbrukar mer tid och minne, och de är beräkningsmässigt dyra. De saknar också typsäkerhet och ökar drifttiden. Det rekommenderas alltid att undvika för mycket användning av boxning och unboxing i programmet.