Разлика између бокса и унбокинга у Ц #

Аутор: Laura McKinney
Датум Стварања: 2 Април 2021
Ажурирати Датум: 5 Може 2024
Anonim
Разлика између бокса и унбокинга у Ц # - Технологија
Разлика између бокса и унбокинга у Ц # - Технологија

Садржај


У Ц #, сви типови вредности су изведени из објекта класе. Дакле, референтна варијабла објекта типа може се односити на било који други тип вриједности. Ц # уводи две методе за Бокинг и Унбокинг, које везују врсту вредности са референтним типом. Основна разлика између Бокинга и Унбокинга је та што је Бокинг конверзија типа вредности у објектни тип, док се, с друге стране, израз Унбокинг односи на претварање типа објекта у тип вредности. Испитајмо остале разлике између бокса и унбокинга.

  1. Упоредни графикон
  2. Дефиниција
  3. Кључне разлике
  4. Закључак

Упоредни графикон

Основе за упоређивањеБоксУнбокинг
ОсновниТип објекта односи се на тип вриједности.процес дохваћања вриједности из објекта у кутији.
СкладиштеВриједност похрањена у скупу копира се у објект похрањен у хеап меморији.Вриједност објеката похрањених у хеап меморији копира се у тип вриједности похрањене на стоку.
КонверзијаИмплицитно претварање.Експлицитна конверзија.
Примеринт н = 24;
објект об = н;
инт м = (инт) об;


Дефиниција бокса

Бокс је поступак претварања типа вредности у тип објекта. Овде се вредност вредности смешта у стог, а врста објекта се чува у хеап меморији. Ово претварање типа вредности у објектни тип је имплицитна конверзија. Објекту можете директно доделити вредност, а Ц # ће обрадити осталу конверзију. Разумејмо пример бокса.

инт и = 24; објект об = и; // Унесите тип целог броја н у тип објекта об. или објект об1 = 21; // овдје се такође објектни тип об1 односи на цијели број

У горњем коду, цели број типа и који садржи вредност 24 смешта се у стог и копира се у објектни тип об. Тип објекта сада се односи на целокупну вредност. Сада "инт и" такође садржи вредност 24, а "тип објекта об" такође садржи вредност 24, али обе вредности су независне једна од друге, тј. Ако промените вредност и, неће одражавати промену у вредност об.


Бокс троши додатну меморију заједно са додатним временом. Разлог је тај што нови објект, који ће се односити на тип вриједности, мора додијелити меморијски простор на хрпи. Затим ће вредност типа вредности која се чува у снопу пренети у тип објекта, на локацију хеап меморије.

Дефиниција Унбокинга

Наличје бокса је Унбокинг. Пребацивање бокса је конверзија типа објекта у тип вредности. Када је одблокирано вредност типа објекта у кутији која се чува на хрпи преноси се у тип вредности који се чува у скупу. За разлику од бокса, Унбокинг се мора изричито одрадити. Тип објекта изричито је додељен типу вредности, а тип вредности мора бити исти као вредност на коју се објект односи. Да разумемо концепт Унбокинг-а са примером.

инт и = 24; објект об = и; // Унесите тип целог броја н у тип објекта об. инт ј = (инт) об; // Распакирајте целокупну вредност која је сачувана у типу објекта об до целог броја и.

Вриједност похрањена у објекту об проналази се тако што ју је бацила на тип исти као што се објект односио на, тј., Цијели број "ј".

Отпакирање такође троши више меморије и више времена. Будући да, када тип објекта мора бити без кутијице, вредност типа објекта похрањена на хрпи мора се пренети у нови тип вредности који се чува у скупу. Врста објекта чија је вредност преузета сада ће бити доступна за одвоз смећа.

  1. У боксу се прави објекат који означава тип вредности. С друге стране, поступак повратка вредности из објекта у кутији назива се унбокинг.
  2. Вриједност типа похрањена у хрпи копира се у објект похрањен у хеап меморији. С друге стране, приликом распакивања, објект похрањен у хеап меморији се копира у врсту вредности која се чува у меморији стека.
  3. Бокс је имплицитна конверзија док је унбокинг експлицитна конверзија.

Закључак:

И бокс и унбокинг троше више времена и меморије, а рачунски су скупи. Такође им недостаје сигурност типа и повећава време трајања. Увек се саветује избегавање превелике употребе бокса и одбацивања бокса у програму.