A boksz és a doboz közötti különbség a C # -ben

Szerző: Laura McKinney
A Teremtés Dátuma: 2 Április 2021
Frissítés Dátuma: 5 Lehet 2024
Anonim
A boksz és a doboz közötti különbség a C # -ben - Technológia
A boksz és a doboz közötti különbség a C # -ben - Technológia

Tartalom


A C # esetében az összes értéktípus az osztályobjektumból származik. Tehát egy objektum típusú referenciaváltozó bármilyen más értéktípusra hivatkozhat. A C # két módszert vezet be a Boxing and Unboxing kategóriába, amelyek az értéktípust a referencia típushoz kapcsolják. Az alapvető különbség a Boxing és a Unboxing között az, hogy a Boxing az értéktípus átalakítása objektumtípussá, míg más kezekben a Unboxing kifejezés az objektumtípus átalakítását értéktípusra utalja. Vizsgáljuk meg a boksz és a doboz közötti további különbségeket.

  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjadobozolásKicsomagolás
AlapvetőAz objektumtípus az érték típusára utal.az érték kinyerésének folyamata a dobozban lévő objektumról.
TárolásA veremben tárolt értéket a halom memóriában tárolt objektumra másolja.A halom memóriában tárolt objektum értéket a veremben tárolt érték típusra másolja.
ÁtalakításImplicit átalakulás.Kifejezett átalakítás.
Példaint n = 24;
objektum ob = n;
int m = (int) ob;


A boksz meghatározása

A Boxing az értéktípus objektumtá konvertálására szolgáló eljárás. Itt az érték típusa a veremben tárolódik, az objektum típusa pedig a halom memóriában. Az érték típusának ez az objektumtípus-átalakítása implicit konverzió. Közvetlenül értéket rendelhet egy objektumhoz, és a C # kezeli a többi konverziót. Megértjük a Boxot egy példával.

int i = 24; ob = i objektum; // Jelölje be az n egész számot az ob objektumtípusba. vagy ob1 = 21 tárgy; // itt az ob1 objektumtípus egész számtípusra is utal

A fenti kódban a 24. értéket tartalmazó i típusú egész szám a veremben tárolódik, és az ob objektumtípusba másolódik. Az objektumtípus egy egész számra utal. Most az „int i” tartalmaz továbbá a 24. értéket és az „ob típusú objektum” is a 24. értéket, de mindkét érték független egymástól, azaz ha megváltoztatja az i értékét, akkor az nem tükrözi a ob értéke


A boksz extra memóriát és időt igényel. Ennek oka az, hogy egy új objektumnak, amely az értéktípusra utal, el kell osztania a memóriaterületet a halomon. Ezután a veremben tárolt értéktípus értéke átkerül az objektumtípusba, a halom memória helyén.

A dobozolás meghatározása

A boksz hátulja a dobozolás. A doboz megszüntetése az objektumtípus konvertálása az érték típusba. A Unboxing szakaszban a dobozban tárolt dobozos objektumtípus értéke a halomban tárolt értéktípusra kerül. A Boxingtól eltérően, a Boxolást kifejezetten kell végrehajtani. Az objektumtípust kifejezetten az érték típusához adják, és az érték típusának meg kell egyeznie azzal az értékkel, amelyre az objektumtípus hivatkozik. Megértsük egy példa a Unboxing fogalmát.

int i = 24; ob = i objektum; // Jelölje be az n egész számot az ob objektumtípusba. int j = (int) ob; // Nyissa ki az ob objektumtípusban tárolt egész értéket az y egész típusra.

Az ob objektumban tárolt értéket úgy lehet letölteni, hogy ugyanahhoz a típusba öntik, mint amelyre az objektum utalt, azaz az „j” egész számtípusra.

A doboz eltávolítása több memóriát és több időt igényel. Mióta, amikor egy objektumtípust nem kell dobozba tenni, akkor a halomban tárolt objektumtípus értékét át kell helyezni a veremben tárolt új értéktípusra. Az a objektumtípus, amelynek a visszakeresett értéke mostantól elérhető lesz a szemétgyűjtéshez.

  1. A boxban az objektumot értéktípusként hivatkozni kell. Másrészt az érték visszakerülését a dobozos objektumból az unboxolásnak nevezzük.
  2. A veremben tárolt értéktípus átmásolódik a halom memóriában tárolt objektumra. Másrészt, a dobozok eltávolításakor a halommemóriában tárolt objektumot a veremmemóriában tárolt értéktípusra másolják.
  3. A boksz implicit átalakítás, míg a dobozolás explicit konverzió.

Következtetés:

Mind a boksz, mind a dobozolás több időt és memóriát igényel, és számítási szempontból drágák. Hiányzik a típusbiztonság és növeli a futási időt. Mindig javasoljuk, hogy kerülje a boksz és a doboz túlzott használatát a programban.