OpCodes.Unbox Campo

Definición

Convierte la representación de un tipo de valor al que se le ha aplicado la conversión boxing en la forma que tendría al aplicarle la conversión unboxing.

public static readonly System.Reflection.Emit.OpCode Unbox;

Valor de campo

Comentarios

En la tabla siguiente se muestra el formato de ensamblado hexadecimal y lenguaje intermedio de Microsoft (MSIL), junto con un breve resumen de referencia:

Formato Formato de ensamblado Descripción
79 <T> Unbox valType Extrae los datos de tipo de valor de obj, su representación boxed.

El comportamiento de transición de pila, en orden secuencial, es:

  1. Una referencia de objeto se inserta en la pila.

  2. La referencia de objeto se extrae de la pila y se quita de la caja a un puntero de tipo de valor.

  3. El puntero de tipo de valor se inserta en la pila.

Un tipo de valor tiene dos representaciones independientes dentro de Common Language Infrastructure (CLI):

  • Formulario 'raw' usado cuando un tipo de valor está incrustado dentro de otro objeto.

  • Formulario "boxed", donde los datos del tipo de valor se encapsulan (boxed) en un objeto para que pueda existir como una entidad independiente.

La unbox instrucción convierte la referencia de objeto (tipo O), la representación boxed de un tipo de valor, en un puntero de tipo de valor (un puntero administrado, tipo &), su formulario sin conversión. El tipo de valor proporcionado (valType) es un token de metadatos que indica el tipo de tipo de valor contenido en el objeto boxed.

A diferencia Boxde , que es necesario para realizar una copia de un tipo de valor para su uso en el objeto , unbox no es necesario copiar el tipo de valor del objeto . Normalmente, simplemente calcula la dirección del tipo de valor que ya está presente dentro del objeto boxed.

InvalidCastException se produce si el objeto no está boxeado como valType.

NullReferenceException se produce si la referencia de objeto es una referencia nula.

TypeLoadException se produce si no se encuentra el tipo valType de valor. Esto suele detectarse cuando las instrucciones del lenguaje intermedio de Microsoft (MSIL) se convierten en código nativo, en lugar de en tiempo de ejecución.

La sobrecarga del método siguiente Emit puede usar el unbox código de operación:

Se aplica a

Producto Versiones
.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