Разлика между бокса и разпалването в C #

Автор: Laura McKinney
Дата На Създаване: 2 Април 2021
Дата На Актуализиране: 5 Може 2024
Anonim
Разлика между бокса и разпалването в C # - Технология
Разлика между бокса и разпалването в C # - Технология

Съдържание


В C # всички типове стойности са извлечени от обекта клас. И така, референтната променлива от тип обект може да се отнася до всеки друг тип стойност. C # въвежда два метода на Boxing и Unboxing, които свързват типа стойност с референтен тип. Основната разлика между Boxing и Unboxing е, че Boxing е преобразуването на типа стойност в тип обект, докато, от друга страна, терминът Unboxing се отнася до преобразуването на типа на обекта в тип стойност. Нека проучим другите разлики между Boxing и Unboxing.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениебоксUnboxing
ОсновенТип на обекта се отнася до типа стойност.процес на извличане на стойност от кутия обект.
съхранениеСтойността, съхранявана в стека, се копира в обекта, съхраняван в паметта на купчината.Стойността на обектите, запаметена в паметта на кучи, се копира в типа стойност, съхранявана в стека.
конверсияНеявно преобразуване.Изрично преобразуване.
примерint n = 24;
обект ob = n;
int m = (int) ob;


Определение за бокс

Боксът е процедура за преобразуване на тип стойност в тип на обект. Тук типът стойност се съхранява в стека, а типът обект се съхранява в паметта на купчината. Това преобразуване на тип стойност в обектния тип е неявно преобразуване. Можете директно да присвоите стойност на даден обект и C # ще се справи с останалата конверсия. Нека разберем Бокс с пример.

int i = 24; обект ob = i; // Попълнете цяло число тип n в обект тип ob. или обект ob1 = 21; // тук също тип обект ob1 се отнася до цяло число

В горния код, целият тип i, съдържащ стойност 24, се съхранява в стека и се копира в обекта тип ob. Тип обект сега се отнася за цяло число. Сега "int i" също съдържа стойност 24, а "тип обект ob" също съдържа стойност 24, но и двете стойности са независими една от друга, т.е. ако промените стойността на i, тя няма да отразява промяната в стойност на об.


Боксът изразходва допълнителна памет заедно с допълнително време. Причината е, че нов обект, който ще се отнася до типа стойност, трябва да разпредели пространството на паметта на купчината. След това стойността на типа стойност, който се съхранява в стека, ще бъде прехвърлен в ob тип на обекта, в местоположението на паметта на купчината.

Определение за Unboxing

Реверсът на Boxing е Unboxing. Unboxing е преобразуване на типа на обекта в тип стойност. В Unboxing стойността на типа на опаковани обекти, съхраняван на купчината, се прехвърля към типа стойност, който се съхранява в стека. За разлика от Boxing, Unboxing трябва да се прави изрично. Типът на обекта е изрично подаден към типа стойност и типът стойност трябва да бъде същата като стойността, към която се отнася типът на обекта. Нека разберем концепцията за Unboxing с пример.

int i = 24; обект ob = i; // Попълнете цяло число тип n в обект тип ob. int j = (int) ob; // Деблокирайте целочислената стойност, съхранявана в обект тип ob до цяло число тип y.

Стойността, съхранявана в обекта ob, се извлича, като се прехвърля към типа, същия, както обектът се отнася, т.е. цяло число тип „j“.

Разпаковането също отнема повече памет и повече време. Тъй като, когато даден тип обект трябва да бъде дебоксиран, стойността на обектния тип, съхраняван в купчината, трябва да бъде прехвърлена към новия тип стойност, съхраняван в стека. Типът на обекта, чиято стойност е била извлечена, вече ще бъде достъпна за събиране на боклука.

  1. В бокса се прави обект, който се отнася като тип стойност. От друга страна, процесът на извличане на стойността обратно от кутия обект се нарича unboxing.
  2. Тип стойност, съхраняван в стека, се копира в обекта, съхраняван в паметта на купчината. От друга страна, при разопаковане, обект, съхраняван в паметта на купчината, се копира в тип стойност, съхраняван в стек памет.
  3. Боксът е косвено преобразуване, докато unboxing е явно преобразуване.

Заключение:

И боксът, и разпалването на бокса отнемат повече време и памет и са изчислително скъпи. Те също нямат безопасност на типа и увеличават режима на експлоатация. Винаги се препоръчва да се избягва прекалено употребата на бокс и отпушване в програмата.