Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
full sharp / 6Операции упаковки и распаковки.pptx
Скачиваний:
10
Добавлен:
08.03.2015
Размер:
57.15 Кб
Скачать

Операции упаковки и распаковки

Упаковка

Упаковка-преобразование представляет собой процесс преобразования типа значения в тип object или любой другой тип интерфейса, реализуемый этим типом значения.

Упаковка-распаковка

Когда тип значения упаковывается средой CLR, она создает программу-оболочку значения внутри System.Object и сохраняет ее в управляемой куче.

Операция распаковки-преобразования извлекает тип значения из объекта.

Упаковка-преобразование является неявной; распаковка-преобразование является явной.

Упаковка

int i = 123;

// The following line boxes i. object o = i;

Распаковка

o = 123;

i = (int)o; // unboxing

Производительность

По сравнению с простыми операциями присваивания операции упаковки-преобразования и распаковки-преобразования являются весьма затратными процессами с точки зрения вычислений.

При выполнении упаковки-преобразования типа значения необходимо создать и разместить новый объект.

Объем вычислений при выполнении операции распаковки- преобразования, хотя и в меньшей степени, но тоже весьма значителен.

Упаковка

Упаковка используется для хранения типов значений в куче "сбора мусора".

Упаковка представляет собой неявное преобразование типа значения в тип object или любой другой тип интерфейса, реализуемый этим типом значения.

При упаковке типа значения в куче выделяется экземпляр объекта и выполняется копирование значения в этот новый объект.

Упаковка

int i = 123;

// The following line boxes i. object o = i;

Упаковка-преобразование

явй.

Распаковка

Распаковка является явным преобразованием из типа object в тип значения или из типа интерфейса в тип значения, его реализующее.Операция распаковки состоит из следующих действий.

Проверка экземпляра объекта на то, что он является упакованным значением заданного типа значения.

Копирование значения из экземпляра в переменную типа- значения.

Распаковка

o = 123;

i = (int)o; // unboxing

Распаковка-преобразование

Соседние файлы в папке full sharp