Рецоммендед, 2024

Избор Уредника

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

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

Цомпарисон Цхарт

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

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

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

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

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

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

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

Повратак Бокинга је Унбокинг. Унбокинг је конверзија типа објекта у тип вредности. У Унбокинг-у, вредност боксованог типа објекта сачувана у гомили преноси се на тип вредности који је ускладиштен у стог. За разлику од Бокинга, Унбокинг мора бити експлицитан. Тип објекта је експлицитно бачен на тип вредности, а тип вредности мора бити исти као вредност на коју се односи тип објекта. Хајде да разумемо концепт Унбокинга са примером.

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

Вриједност похрањена у објекту об је дохваћена тако што је бачена на тип који је исти као објект који се односи на тј. Цијели број типа “ј”.

Унбокинг такође троши више меморије и више времена. Будући да, када тип објекта мора бити унбокед онда вриједност објекта типа похрањена у хеап-у мора бити пренесена у нови тип вриједности похрањен у стог. Тип објекта чија је вриједност преузета сада ће бити доступна за прикупљање смећа.

Кључне разлике између Бокинга и Унбокинга

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

Закључак:

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

Top