Різниця між боксом та unboxing у C #

Автор: Laura McKinney
Дата Створення: 2 Квітень 2021
Дата Оновлення: 5 Травень 2024
Anonim
В ЧЕМ РАЗНИЦА МЕЖДУ АНДРОИД ТВ И ЧИСТЫМ АНДРОИДОМ В СМАРТ ТВ БОКСАХ!!! ПРОСТЫМИ СЛОВАМИ
Відеоролик: В ЧЕМ РАЗНИЦА МЕЖДУ АНДРОИД ТВ И ЧИСТЫМ АНДРОИДОМ В СМАРТ ТВ БОКСАХ!!! ПРОСТЫМИ СЛОВАМИ

Зміст


У C # всі типи значень виводяться з об’єкта класу. Отже, довідкова змінна об'єкта типу може посилатися на будь-який інший тип значення. C # представляє два способи Boxing та Unboxing, які пов'язують тип значення з типом посилання. Основна відмінність Boxing від Unboxing полягає в тому, що Boxing - це перетворення типу значення в тип об'єкта, тоді як, з іншого боку, термін Unboxing означає перетворення типу об'єкта в тип значення. Давайте вивчимо інші відмінності боксу та unboxing.

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма

Основа для порівнянняБоксРозпакування
ОсновніТип об'єкта відноситься до типу значення.процес отримання значення з об'єкта, який знаходиться в коробці.
ЗберіганняЗначення, збережене в стеку, копіюється в об'єкт, збережений у купі пам'яті.Значення об'єктів, збережене в пам'яті купи, копіюється у тип значення, збережений у стеці.
ПеретворенняНеявне перетворення.Явна конверсія.
Прикладint n = 24;
об’єкт ob = n;
int m = (int) ob;


Визначення боксу

Бокс - це процедура перетворення типу значення в тип об'єкта. Тут тип значення зберігається на стеку, а тип об'єкта зберігається в пам'яті купи. Це перетворення типу значення в тип об'єкта - це неявне перетворення. Ви можете безпосередньо призначити значення об'єкту, і C # буде обробляти решту перетворень. Давайте розберемось із прикладом боксу.

int i = 24; об’єкт ob = i; // Позначте цілий тип n у тип об'єкта ob. або об’єкт ob1 = 21; // тут також тип об’єкта ob1 посилається на цілий тип

У наведеному вище коді ціле число типу, що містить значення 24, зберігається в стеці і копіюється в об'єкт типу ob. Тип об'єкта тепер посилається на ціле значення. Тепер "int i" також містить значення 24, а "тип об'єкта ob" також містить значення 24, але обидва значення не залежать одне від одного, тобто якщо ви зміните значення i, воно не відображатиме зміни в значення об.


Бокс витрачає додаткову пам’ять разом із додатковим часом. Причина полягає в тому, що новий об’єкт, який буде посилатися на тип значення, повинен виділити простір пам'яті на купі. Далі значення типу значення, яке зберігається в стеку, буде перенесено в тип об'єкта, в розташування пам'яті купи.

Визначення Unboxing

Реверс боксу - Unboxing. Unboxing - це перетворення типу об'єкта у тип значення. У розділі "Розблокування" значення типу об'єктів, що зберігаються в купі, переноситься на тип значення, який зберігається в стеку. На відміну від боксу, Unboxing потрібно робити явно. Тип об'єкта явно передається типу типу, а тип значення повинен бути таким самим, як значення, на яке посилається тип об'єкта. Давайте розберемося з прикладом концепції Unboxing.

int i = 24; об’єкт ob = i; // Позначте цілий тип n у тип об'єкта ob. int j = (int) ob; // Розблокуйте ціле значення, збережене в об'єктному типі ob до цілого типу y.

Значення, що зберігається в об'єкті ob, отримують шляхом виведення його типу, такому ж, як об'єкт посилався на, тобто, ціле число "j".

Розблокування також забирає більше пам’яті та більше часу. Оскільки, коли тип об’єкта повинен бути розпакований, значення цього типу об'єкта, що зберігається в купі, має бути перенесено в новий тип значення, що зберігається в стеку. Тип об'єкта, значення якого було отримано, тепер буде доступне для збору сміття.

  1. У боксі об'єкт робиться для позначення типу типу. З іншого боку, процес повернення значення назад із об'єкта, який знаходиться в коробці, називається розпакуванням.
  2. Тип значення, що зберігається в стеку, копіюється в об'єкт, що зберігається в купі пам'яті. З іншого боку, при розпакуванні об'єкт, що зберігається у купі пам'яті, копіюється у тип значення, що зберігається у стеці пам'яті.
  3. Бокс - це неявна конверсія, тоді як розгортання - це явна конверсія.

Висновок:

Як бокс, так і розпакування займають більше часу і пам'яті, і вони обчислювально дорогі. Вони також відсутні у безпеці типу та збільшують накладні витрати. Завжди радиться уникати занадто великого використання боксу та розпакування в програмі.