Pagkakaiba sa pagitan ng Boxing at Unboxing sa C #

May -Akda: Laura McKinney
Petsa Ng Paglikha: 2 Abril 2021
I -Update Ang Petsa: 5 Mayo 2024
Anonim
#BitoyStory 10: "PS4 Pro & 4K Gaming"
Video.: #BitoyStory 10: "PS4 Pro & 4K Gaming"

Nilalaman


Sa C #, ang lahat ng mga uri ng halaga ay nagmula sa object ng klase. Kaya, ang isang reference variable ng uri ng bagay ay maaaring sumangguni sa anumang iba pang uri ng halaga. Ipinakilala ng C # ang dalawang pamamaraan sa Boxing at Unboxing, na nag-uugnay sa uri ng halaga sa uri ng sanggunian. Ang pangunahing pagkakaiba sa pagitan ng Boxing at Unboxing ay ang Boksing ay ang pag-convert ng uri ng halaga sa isang uri ng bagay samantalang, sa ibang mga kamay, ang terminong Unboxing ay tumutukoy sa pag-convert ng uri ng object sa uri ng halaga. Pag-aralan natin ang iba pang mga pagkakaiba sa pagitan ng Boxing at Unboxing.

  1. Tsart ng paghahambing
  2. Kahulugan
  3. Pangunahing Pagkakaiba
  4. Konklusyon

Tsart ng paghahambing

Batayan para sa PaghahambingBoksingPag-unbox
PangunahingAng uri ng object ay tumutukoy sa uri ng halaga.proseso ng pagkuha ng halaga mula sa boxed object.
ImbakanAng halaga na nakaimbak sa salansan ay kinopya sa bagay na nakaimbak sa memorya ng bunton.Ang halaga ng mga bagay na nakaimbak sa memorya ng bunton ay kinopya sa uri ng halaga na nakaimbak sa salansan.
PagbabagoImplicit na conversion.Malinaw na pagbabagong loob.
Halimbawaint n = 24;
object ob = n;
int m = (int) ob;


Kahulugan ng Boksing

Ang Boxing ay isang pamamaraan ng pag-convert ng isang uri ng halaga sa isang uri ng bagay. Dito, ang uri ng halaga ay naka-imbak sa salansan, at ang uri ng bagay ay naka-imbak sa memorya ng bunton. Ang pagbabagong ito ng uri ng halaga sa uri ng bagay ay isang implisit na conversion. Maaari kang direktang magtalaga ng isang halaga sa isang bagay, at ang C # ay hahawak sa natitirang conversion. Unawain natin ang Boksing na may isang halimbawa.

int i = 24; object ob = i; // Box ang uri ng integer n sa uri ng bagay ob. o object ob1 = 21; // narito rin ang isang uri ng object ob1 ay tumutukoy sa isang uri ng integer

Sa itaas na code, ang uri ng integer na naglalaman ng halaga 24 ay naka-imbak sa salansan at kinopya sa uri ng bagay na ob. Ang isang uri ng bagay ay tinutukoy ngayon ang isang halaga ng integer. Ngayon, ang "int i" ay naglalaman din ng halaga 24 at ang "uri ng bagay ob" ay naglalaman din ng halaga 24, ngunit ang parehong mga halaga ay independiyente sa bawat isa ie kung binago mo ang halaga ng i, hindi nito makikita ang pagbabago sa halaga ng ob.


Kinukonsumo ng boksing ang sobrang memorya kasama ang labis na oras. Ang dahilan ay ang isang bagong bagay, na tumutukoy sa uri ng halaga, ay dapat maglaan ng puwang ng memorya sa bunton. Susunod, ang halaga ng uri ng halaga na naka-imbak sa salansan ay ililipat upang mapunta ang uri ng bagay, sa lokasyon ng memorya ng magbunton.

Kahulugan ng Unboxing

Ang baligtad ng Boksing ay Unboxing. Ang pag-unbox ay isang conversion ng uri ng bagay sa uri ng halaga. Sa Unboxing ang halaga ng uri ng naka-box na object na nakaimbak sa bunton ay inilipat sa uri ng halaga na nakaimbak sa salansan. Hindi tulad ng Boxing, ang Unboxing ay dapat gawin nang malinaw. Ang uri ng bagay ay tahasang itinapon sa uri ng halaga, at ang uri ng halaga ay dapat kapareho ng halaga na tinutukoy ng uri ng bagay. Unawain natin ang konsepto ng Unboxing na may isang halimbawa.

int i = 24; object ob = i; // Box ang uri ng integer n sa uri ng bagay ob. int j = (int) ob; // I-unbox ang halaga ng integer na nakaimbak sa uri ng bagay ob sa uri ng integer y.

Ang halaga na nakaimbak sa ob ob ay nakuha sa pamamagitan ng paghahagis sa uri na katulad ng bagay na tinutukoy sa i.e. integer type "j".

Ang pag-unbox ay kumokonsumo din ng mas maraming memorya at mas maraming oras. Dahil, kapag ang isang uri ng bagay ay dapat na hindi ma-boot pagkatapos ang halaga ng uri ng bagay na nakaimbak sa bunton ay dapat ilipat sa bagong uri ng halaga na nakaimbak sa salansan. Ang uri ng object na ang halaga na nakuha ay magagamit na ngayon para sa pagkolekta ng basura.

  1. Sa boxing, ang isang bagay ay ginawa upang sumangguni bilang isang uri ng halaga. Sa kabilang banda, ang proseso ng pagkuha ng halaga pabalik mula sa boxed object ay tinatawag na unboxing.
  2. Ang isang uri ng halaga na nakaimbak sa isang stack ay kinopya sa bagay na nakaimbak sa memorya ng bunton. Sa kabilang banda, sa unboxing, ang isang bagay na nakaimbak sa memorya ng tambak ay kinopya sa isang uri ng halaga na nakaimbak sa memorya ng stack.
  3. Ang boksing ay isang pahiwatig na pagbago samantalang, ang pag-unbox ay isang malinaw na pagbabagong loob.

Konklusyon:

Parehong ang boxing at unboxing ay kumokonsumo ng mas maraming oras at memorya, at ang mga ito ay mahal sa computationally. Kulang din sila sa kaligtasan ng uri at pinapataas ang runtime overhead. Laging pinapayuhan na maiwasan ang labis na paggamit ng boxing at unboxing sa programa.