Поделиться через


OpCodes.Unbox Поле

Определение

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

public: static initonly System::Reflection::Emit::OpCode Unbox;
public static readonly System.Reflection.Emit.OpCode Unbox;
 staticval mutable Unbox : System.Reflection.Emit.OpCode
Public Shared ReadOnly Unbox As OpCode 

Значение поля

Комментарии

В следующей таблице приведен шестнадцатеричный формат инструкции и формат сборки MSIL, а также краткая справочная сводка:

Формат Формат сборки Описание
79 <T> Unbox valType Извлекает данные типа значения из obj, его упаковав представление.

Переходный режим стека в последовательном порядке:

  1. Ссылка на объект помещается в стек.

  2. Ссылка на объект выскочила из стека и распаковывала указатель типа значения.

  3. Указатель типа значения помещается в стек.

Тип значения имеет два отдельных представления в cli:

  • Необработанная форма, используемая, когда тип значения внедрен в другой объект.

  • Форма "упакована", где данные в типе значения упаковываются (упаковываются) в объект, чтобы он смог существовать в качестве независимой сущности.

Инструкция unbox преобразует ссылку на объект (тип O), упаковаемое представление типа значения в указатель типа значения (управляемый указатель, тип &), его неконсервированную форму. Предоставленный тип значения (valType) — это маркер метаданных, указывающий тип типа значения, содержащегося в упакованном объекте.

В отличие от Box, который требуется для создания копии типа значения для использования в объекте, unbox не требуется копировать тип значения из объекта . Обычно он просто вычисляет адрес типа значения, который уже присутствует внутри упаковаемого объекта.

InvalidCastException возникает, если объект не упаковывается как valType.

NullReferenceException возникает, если ссылка на объект является пустой ссылкой.

TypeLoadException возникает, если не удается найти тип valType значения. Обычно это обнаруживается при преобразовании инструкций MSIL в машинный код, а не во время выполнения.

Emit Следующая перегрузка unbox метода может использовать код операции:

Применяется к