Partilhar via


OpCodes.Unbox Campo

Definição

Converte a representação demarcada de um tipo de valor em sua forma não marcada.

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 

Valor do campo

Comentários

A tabela a seguir lista o formato de assembly hexadecimal e MSIL (Microsoft Intermediate Language) da instrução, juntamente com um breve resumo de referência:

Formatar Formato de assembly Descrição
79 <T> Unbox valType Extrai os dados de tipo de valor de obj, sua representação em caixa.

O comportamento de transição da pilha, em ordem sequencial, é:

  1. Uma referência de objeto é enviada por push para a pilha.

  2. A referência de objeto é exibida da pilha e sem caixa para um ponteiro de tipo de valor.

  3. O ponteiro de tipo de valor é enviado por push para a pilha.

Um tipo de valor tem duas representações separadas dentro da CLI (Common Language Infrastructure):

  • Uma forma 'raw' usada quando um tipo de valor é inserido em outro objeto.

  • Um formulário 'boxed', em que os dados no tipo de valor são encapsulados (em caixa) em um objeto para que possam existir como uma entidade independente.

A unbox instrução converte a referência de objeto (tipo O), a representação em caixa de um tipo de valor, em um ponteiro de tipo de valor (um ponteiro gerenciado, digite &), seu formulário sem caixa. O tipo de valor fornecido (valType) é um token de metadados que indica o tipo de valor contido no objeto em caixa.

Ao contrário Boxde , que é necessário para fazer uma cópia de um tipo de valor para uso no objeto , unbox não é necessário copiar o tipo de valor do objeto. Normalmente, ele simplesmente calcula o endereço do tipo de valor que já está presente dentro do objeto em caixa.

InvalidCastException será gerado se o objeto não estiver em caixa como valType.

NullReferenceException será gerado se a referência de objeto for uma referência nula.

TypeLoadException será gerado se o tipo valType de valor não puder ser encontrado. Normalmente, isso é detectado quando as instruções da MSIL (Linguagem Intermediária da Microsoft) são convertidas em código nativo, em vez de em runtime.

A sobrecarga do método Emit a seguir pode usar o unbox opcode:

Aplica-se a