OpCodes.Unbox Campo
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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, é:
Uma referência de objeto é enviada por push para a pilha.
A referência de objeto é exibida da pilha e sem caixa para um ponteiro de tipo de valor.
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: