OpCodes.Initobj Campo
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Inicializa cada campo del tipo de valor en una dirección especificada a una referencia nula o a 0 del tipo primitivo adecuado.
public: static initonly System::Reflection::Emit::OpCode Initobj;
public static readonly System.Reflection.Emit.OpCode Initobj;
staticval mutable Initobj : System.Reflection.Emit.OpCode
Public Shared ReadOnly Initobj As OpCode
Valor de campo
Comentarios
En la tabla siguiente se muestra el formato de ensamblado hexadecimal de la instrucción y del lenguaje intermedio de Microsoft (MSIL), junto con un breve resumen de referencia:
| Formato | Formato de ensamblado | Descripción |
|---|---|---|
FE 15 <T> |
initobj
typeTok
|
Inicializa un tipo de valor. |
El comportamiento de transición de la pila, en orden secuencial, es:
La dirección del tipo de valor que se va a inicializar se inserta en la pila.
La dirección se extrae de la pila; el tipo de valor en la dirección especificada se inicializa como tipo
typeTok.
La instrucción initobj inicializa cada campo del tipo de valor especificado por la dirección insertada (de tipo native int, &o *) a una referencia nula o a 0 del tipo primitivo adecuado. Después de llamar a este método, la instancia está lista para llamar a un método constructor. Si typeTok es un tipo de referencia, esta instrucción tiene el mismo efecto que ldnull seguido de stind.ref.
A diferencia de Newobj, initobj no llama al método constructor.
Initobj está pensado para inicializar tipos de valor, mientras que newobj se usa para asignar e inicializar objetos.
La siguiente sobrecarga del método Emit puede usar el código de operación initobj: