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

Концепция упаковки и распаковки занимает одно из основных мест в системе типов языка. Она обеспечивает связь между размерными и ссылочными типами делая возможным преобразование значения любого размерного типа к типу Object и наоборот. Упаковка и распаковка позволяет рассматривать систему типов унифицированным образом, когда значение любого типа может рассматриваться как объект.

Упаковка

Упаковка делает возможным неявное преобразование размерного типа к ссылочному. Допускаются следующие преобразования упаковки:

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

Распаковка

Распаковка делает возможным явное преобразование ссылочного типа к размерному. Допускаются следующие преобразования распаковки:

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

В процессе распаковки производится проверка того, что экземпляр объекта был ранее создан посредством упаковки значения данного размерного типа. Если исходный операнд равен Null, генерируется исключительная ситуация типа System.NullReferenceException. Если исходный операнд является ссылкой на несовместимый объект, то генерируется исключительная ситуация типа System.InvalidCastException.

См. также:

Типы данных