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
: