Ler em inglês

Partilhar via


OpCodes.Box Campo

Definição

Converte um tipo de valor em uma referência de objeto (tipo O).

C#
public static readonly System.Reflection.Emit.OpCode Box;

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
8C <T> Caixa valTypeToken Converta um tipo de valor (do tipo especificado em ) em valTypeTokenuma referência de objeto verdadeira.

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

  1. Um tipo de valor é enviado por push para a pilha.

  2. O tipo de valor é exibido da pilha; a box operação é executada.

  3. Uma referência de objeto para o tipo de valor "boxed" resultante é enviada por push para a pilha.

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

  • Um formulário 'bruto' usado quando um tipo de valor é inserido em outro objeto ou na pilha.

  • 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 box instrução converte o tipo de valor 'raw' (unboxed) em uma referência de objeto (tipo O). Isso é feito criando um novo objeto e copiando os dados do tipo de valor para o objeto recém-alocado. valTypeToken é um token de metadados que indica o tipo do tipo de valor na pilha.

OutOfMemoryException será gerado se não houver memória suficiente para atender à solicitação.

TypeLoadException será gerado se a classe não puder ser encontrada. Normalmente, isso é detectado quando a MSIL (Microsoft Intermediate Language) é convertida em código nativo, em vez de em runtime.

Emit A seguinte sobrecarga de método pode usar o box opcode:

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0