Skirtumas tarp bokso ir bokso klasėje C #

Autorius: Laura McKinney
Kūrybos Data: 2 Balandis 2021
Atnaujinimo Data: 5 Gegužė 2024
Anonim
Где в Сибири Раки зимуют!?! Уловом был сильно удивлён. Ходовая охота на зайцев, тропление зайцев.
Video.: Где в Сибири Раки зимуют!?! Уловом был сильно удивлён. Ходовая охота на зайцев, тропление зайцев.

Turinys


C # reikšmėje visi reikšmių tipai yra išvedami iš klasės objekto. Taigi, pamatinis objekto tipo kintamasis gali reikšti bet kurį kitą vertės tipą. C # pristato du metodus, susijusius su „Boxing“ ir „Boxing“, kurie vertės tipą susieja su nuorodos tipu. Pagrindinis skirtumas tarp „Boxing“ ir „Boxing“ yra tas, kad „Boxing“ yra vertės tipo konvertavimas į objekto tipą, tuo tarpu kitose rankose „Unboxing“ reiškia objekto tipo konvertavimą į vertės tipą. Panagrinėkime kitus skirtumus tarp bokso ir bokso.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasBoksas„Unboxing“
PagrindinisObjekto tipas nurodo vertės tipą.vertės gavimo iš dėžutės objekto procesas.
SandėliavimasVertė, saugoma krūvoje, nukopijuojama į objektą, saugomą krūvos atmintyje.Objektų vertė, saugoma krūvos atmintyje, nukopijuojama į vertės tipą, saugomą krūvoje.
KonversijaNumanomas konversija.Aiškus virsmas.
Pavyzdysint n = 24;
objektas ob = n;
int m = (int) ob;


Bokso apibrėžimas

Boksas yra vertės tipo konvertavimo į objekto tipą procedūra. Čia vertės tipas yra saugomas krūvoje, o objekto tipas - krūvos atmintyje. Ši vertės tipo konvertavimas į objekto tipą yra netiesioginė konversija. Objektui galite tiesiogiai priskirti reikšmę, o likusias konversijas atliks C #. Supraskime bokso pavyzdį.

int i = 24; objektas ob = i; // Įveskite objekto tipo ob sveikąjį skaičių n. arba objektas ob1 = 21; // čia taip pat objekto tipas ob1 reiškia sveikojo skaičiaus tipą

Aukščiau pateiktame kode i tipo sveikasis skaičius, kurio reikšmė yra 24, yra saugomas krūvoje ir nukopijuojamas į objekto tipą ob. Objekto tipas dabar nurodo sveikąją skaičių. Dabar „int i“ taip pat yra reikšmė 24, o objekto tipas ob - taip pat reikšmė 24, tačiau abi reikšmės yra nepriklausomos viena nuo kitos, ty jei pakeisite i reikšmę, ji neatspindės pokyčio vertė ob.


Boksas sunaudoja papildomos atminties ir laiko. Priežastis ta, kad naujas objektas, kuris nurodys vertės tipą, turi paskirstyti atminties vietą krūvoje. Tada vertės rūšies, kuri saugoma krūvoje, vertė bus perkelta į objekto tipą, krūvos atminties vietoje.

„Unboxing“ apibrėžimas

„Boxing“ atvirkštinė dalis yra „Boxing“. „Box“ žymėjimas yra objekto tipo konvertavimas į vertės tipą. Lauke „Unboxing“ dėžutėje įrašyto objekto tipo vertė krūvoje perkeliama į vertės tipą, kuris saugomas krūvoje. Skirtingai nuo bokso, „Unboxing“ turi būti atliekamas aiškiai. Objekto tipas aiškiai nurodytas vertės tipui, o vertės tipas turi būti toks pat, kaip ir vertė, kurią nurodo objekto tipas. Supapraskime pavyzdžio „Unboxing“ sąvoką.

int i = 24; objektas ob = i; // Įveskite objekto tipo ob sveikąjį skaičių n. int j = (int) ob; // Panaikinkite objekto tipo ob saugomą sveikojo skaičiaus žymėjimą sveikojo skaičiaus tipu y.

Objekte saugoma reikšmė gaunama perduodant ją tokiam pačiam tipui, kokį objektas nurodė, t. Y. Sveikojo skaičiaus tipui „j“.

Be dėžutės sunaudojama daugiau atminties ir daugiau laiko. Kadangi, kai objekto tipas turi būti nepašalintas, krūvoje saugomo objekto tipo vertė turi būti perkelta į naują vertės tipą, saugomą krūvoje. Objekto tipas, kurio vertė buvo gauta, dabar bus prieinamas šiukšlėms rinkti.

  1. Bokso metu objektas nurodomas kaip vertės tipas. Kita vertus, vertės susigrąžinimo iš dėžutės objektas yra vadinamas unboxing.
  2. Vertės tipas, saugomas krūvoje, nukopijuojamas į objektą, saugomą krūvos atmintyje. Kita vertus, išimant dėžę, krūvos atmintyje saugomas objektas nukopijuojamas į vertės tipą, saugomą krūvos atmintyje.
  3. Boksas yra numanomas konversija, tuo tarpu bokso buvimas yra aiškus konversija.

Išvada:

Tiek boksas, tiek ir boksas užima daugiau laiko ir atminties, be to, jie yra skaičiuojami brangiai. Jie taip pat neturi tipo saugos ir padidina darbo laiką. Visada patariama programoje vengti per daug naudoti boksą ir boksą.