Erinevus poksi ja boksiboksi vahel C # -s

Autor: Laura McKinney
Loomise Kuupäev: 2 Aprill 2021
Värskenduse Kuupäev: 5 Mai 2024
Anonim
Erinevus poksi ja boksiboksi vahel C # -s - Tehnoloogia
Erinevus poksi ja boksiboksi vahel C # -s - Tehnoloogia

Sisu


C #-s on kõik väärtuse tüübid tuletatud klassiobjektist. Niisiis võib tüübiobjekti referentsmuutuja viidata mis tahes muule väärtuse tüübile. C # tutvustab kahte meetodit Boxing ja Unboxing, mis seob väärtuse tüübi viitetüübiga. Põhiline erinevus boksi ja kasti vahel on see, et poksimine on väärtuse tüübi teisendamine objektitüübiks, samas kui teistes kätes tähendab termin Unboxing objekti tüübi teisendamist väärtuse tüübiks. Uurime teisi poksi ja poksimise erinevusi.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusPoksUnboxing
PõhilineObjekti tüüp viitab väärtuse tüübile.kasti lisatud objektist väärtuse leidmise protsess.
LadustamineVirnas salvestatud väärtus kopeeritakse hunnikmälus talletatud objekti.Hunnimällu salvestatud objektide väärtus kopeeritakse virnas talletatud väärtuse tüübile.
TeisendusKaudne muundamine.Selgesõnaline teisendus.
Näideint n = 24;
objekt ob = n;
int m = (int) ob;


Poksi mõiste

Boksimine on väärtuse tüübi objekti tüübiks teisendamise protseduur. Väärtuse tüüp salvestatakse siin virna ja objekti tüüp hunniku mällu. Väärtuse tüübi teisendamine objektitüübiks on kaudne teisendus. Saate objektile otse väärtuse määrata ja ülejäänud osa teisendamisega tegeleb C #. Saame aru poksist näitega.

int i = 24; objekt ob = i; // Lahutage täisarv tüüp objektitüüpi ob. või objekt ob1 = 21; // siin viitab ka objektitüüp ob1 täisarvutüübile

Ülaltoodud koodi korral salvestatakse täisarv i väärtusega 24 väärtuses virna ja kopeeritakse objektitüüpi ob. Objekti tüüp viitab nüüd täisarvule. Nüüd sisaldab “int i” ka väärtust 24 ja “objekti tüüp ob” ka väärtust 24, kuid mõlemad väärtused on üksteisest sõltumatud, st kui muudate i väärtust, ei kajasta see muutust väärtuses i ob väärtus


Poks kulutab koos lisaajaga ka mälu. Põhjus on see, et uus objekt, mis viitab väärtuse tüübile, peab eraldama mäluruumi hunnikus. Järgmisena kantakse virnasse salvestatud väärtuse tüüp üle objektiobjekti tüübile, hunniku mälu asukohta.

Kasti tühjendamise määratlus

Poksi tagakülg on kasti eemaldamine. Kasti eemaldamine on objekti tüübi teisendamine väärtuse tüübiks. Rakenduses Unboxing kantakse hunnikus salvestatud kasti objektitüübi väärtus väärtuse tüübile, mis salvestatakse virnas. Erinevalt poksist peab boksi eemaldamine toimuma selgesõnaliselt. Objektitüüp valatakse selgesõnaliselt väärtuse tüübile ja väärtuse tüüp peab olema sama kui väärtus, millele objekti tüüp viitab. Saame aru näitest lahtirebimise kontseptsioonist.

int i = 24; objekt ob = i; // Lahutage täisarv tüüp objektitüüpi ob. int j = (int) ob; // Tühjendage objektitüüpi ob salvestatud täisarv väärtus täisarvutüübiga y.

Objekti ob salvestatud väärtus saadakse, valades selle sama tüüpi objektile, millele objekt viitas, st täisarvutüübile „j”.

Kasti tühjendamine kulutab ka rohkem mälu ja rohkem aega. Kuna kui objektitüüp tuleb lahterdada, tuleb hunnikusse salvestatud objektitüübi väärtus kanda üle uuele korstnasse salvestatud väärtuse tüübile. Objektitüüp, mille väärtus on välja otsitud, on nüüd saadaval prügikoristamiseks.

  1. Poksis pannakse objekt viitama väärtuse tüübiks. Teisest küljest nimetatakse väärtust karbitud objektilt tagasi toomise protsessi lahterdamist.
  2. Virnas salvestatud väärtuse tüüp kopeeritakse hunnikmällu salvestatud objektile. Teisest küljest kopeeritakse kasti lahti võtmise korral hunnikmällu salvestatud objekt väärtuse tüübile, mis on salvestatud virnade mällu.
  3. Boksimine on kaudne teisendus, samas kui kastita on sõnaselge konversioon.

Järeldus:

Nii poks kui ka karbist väljaminek kulutavad rohkem aega ja mälu ning on arvutuslikult kallid. Neil puudub ka tüübi ohutus ja see suurendab käituskulusid. Alati soovitatakse programmis vältida poksimise ja karbist liiga palju kasutamist.