Suositeltava, 2024

Toimituksen Valinta

Ero nyrkkeilyn ja poistamisen välillä C #

C #: ssä kaikki arvotyypit johdetaan luokan objektista. Täten tyypin objektin referenssimuuttuja voi viitata mihin tahansa muuhun arvotyyppiin. C # esittelee kaksi tapaa Boxing ja Unboxing -toimintoihin, jotka yhdistävät arvon tyypin viitetyyppiin. Perusero nyrkkeilyn ja unboxingin välillä on se, että nyrkkeily on arvon tyypin muuntaminen objektityypiksi, kun taas toisilla käsillä termi Unboxing tarkoittaa objektityypin muuntamista arvotyypiksi. Tutkitaan muita Boxingin ja Unboxingin välisiä eroja.

Vertailukaavio

Vertailun perusteetNyrkkeilyunboxing
perustiedotObjektityyppi tarkoittaa arvotyyppiä.prosessin, jossa arvoa haetaan laatikkoon.
varastointiPinoan tallennettu arvo kopioidaan kasanmuistiin tallennettuun kohteeseen.Heap-muistiin tallennetun objektin arvo kopioidaan pinoan tallennettuun arvotyyppiin.
muuntaminenImplisiittinen muuntaminen.Selkeä muuntaminen.
esimerkkiint n = 24;
kohde ob = n;
int m = (int) ob;

Nyrkkeilyn määritelmä

Nyrkkeily on menettely, jolla arvon tyyppi muunnetaan objektityypiksi. Tässä arvotyyppi tallennetaan pinoon, ja objektityyppi tallennetaan kasanmuistiin. Tämä arvotyypin muuntaminen objektityypiksi on implisiittinen muunnos. Voit määrittää kohteen suoraan arvoon ja C # käsittelee loput muunnoksen. Ymmärrämme Boxing esimerkin kanssa.

 int i = 24; kohde ob = i; // Laita kokonaisluku tyyppi n objektityyppiin ob. tai objekti ob1 = 21; // tässä myös objektityyppi ob1 viittaa kokonaislukutyyppiin 

Yllä olevassa koodissa kokonaisluku tyyppi i, joka sisältää arvon 24, tallennetaan pinoon ja kopioidaan objektityyppiin ob. Objektityyppi viittaa nyt kokonaislukuarvoon. Nyt "int i" sisältää myös arvon 24 ja "objektityyppi ob" sisältää myös arvon 24, mutta molemmat arvot ovat toisistaan ​​riippumattomia eli jos muutat arvoa i, se ei heijasta muutosta arvo ob.

Nyrkkeily kuluttaa ylimääräistä muistia sekä ylimääräistä aikaa. Syynä on se, että uuden kohteen, joka viittaa arvotyyppiin, on varattava muistitila kasaan. Seuraavaksi pinoon tallennetun arvotyypin arvo siirretään objektityypille ob-muistipaikkaan.

Määrittely Unboxing

Nyrkkeilyn kääntö on Unboxing. Unboxing on objektityypin muuntaminen arvotyypiksi. Kohdassa Unboxing siirretään kasaan tallennettujen laatikkotyyppien arvo arvoon, joka tallennetaan pinoon. Toisin kuin nyrkkeily, Unboxing on tehtävä nimenomaisesti. Objektityyppi valitaan nimenomaan arvotyyppiin, ja arvotyypin on oltava sama kuin kohteen tyypin arvo. Ymmärrämme Unboxing-käsitteen esimerkin.

 int i = 24; kohde ob = i; // Laita kokonaisluku tyyppi n objektityyppiin ob. int j = (int) ob; // Poista postilokerosta objektityyppiin ob tallennettu kokonaislukuarvo kokonaisluvun tyypiksi y. 

Ob-objektiin tallennettu arvo haetaan vetämällä se tyypille, joka on sama kuin objektin viitaten kokonaisluvutyyppiin ”j”.

Poistaminen poistaa myös enemmän muistia ja enemmän aikaa. Koska, kun objektityypin täytyy olla pakkaamaton, niin kasaan tallennetun objektityypin arvo on siirrettävä pinoon tallennettuun uuteen arvotyyppiin. Objektityyppi, jonka arvo on haettu, on nyt käytettävissä roskatekstissä.

Nyrkkeilyn ja purkamisen keskeiset erot

  1. Nyrkkeilyssä esine on tarkoitettu viitetuksi arvotyypiksi. Toisaalta, prosessi, jolla arvo palautetaan takaisin laatikkoon, on nimeltään unboxing.
  2. Pinoihin tallennettu arvotyyppi kopioidaan kasanmuistiin tallennettuun kohteeseen. Toisaalta unboxingissa kasa-muistiin tallennettu objekti kopioidaan pinon muistiin tallennettuun arvotyyppiin.
  3. Nyrkkeily on implisiittinen muunnos, unboxing on nimenomainen muuntaminen.

johtopäätös:

Sekä nyrkkeily että unboxing kuluttavat enemmän aikaa ja muistia, ja ne ovat laskennallisesti kalliita. Heiltä puuttuu myös tyyppiturvallisuus ja se lisää käyttöaikaa. On aina suositeltavaa välttää liian paljon nyrkkeilyä ja unboxingia ohjelmassa.

Top