OpCodes.Newobj 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í.
Crea un nuevo objeto o una nueva instancia de un tipo de valor e inserta en la pila de evaluación una referencia a objeto (de tipo O
).
public: static initonly System::Reflection::Emit::OpCode Newobj;
public static readonly System.Reflection.Emit.OpCode Newobj;
staticval mutable Newobj : System.Reflection.Emit.OpCode
Public Shared ReadOnly Newobj As OpCode
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 |
---|---|---|
73 <T > |
newobj ctor |
Asigna un tipo de valor o un objeto no inicializado y llama al método ctor constructor . |
El comportamiento de transición de pila, en orden secuencial, es:
Los argumentos
arg1
a travésargn
se insertan en la pila en secuencia.Los argumentos
argn
a travésarg1
se extrae de la pila y se pasan actor
para la creación de objetos.Se inserta una referencia al nuevo objeto en la pila.
La newobj
instrucción crea un nuevo objeto o una nueva instancia de un tipo de valor.
Ctor
es un token de metadatos (o methodref
methoddef
que debe marcarse como constructor) que indica el nombre, la clase y la firma del constructor que se va a llamar.
La newobj
instrucción asigna una nueva instancia de la clase asociada ctor
a e inicializa todos los campos de la nueva instancia en 0 (del tipo adecuado) o referencias nulas según corresponda. A continuación, llama al constructor ctor
con los argumentos especificados junto con la instancia recién creada. Después de llamar al constructor, la referencia de objeto inicializada (tipo O
) se inserta en la pila.
Desde el punto de vista del constructor, el objeto sin inicializar es el argumento 0 y los demás argumentos pasados a newobj siguen en orden.
Todas las matrices unidimensionales basadas en cero se crean mediante Newarr, no newobj
. Por otro lado, todas las demás matrices (más de una dimensión o unidimensional pero no basadas en cero) se crean mediante newobj
.
Normalmente, los tipos de valor no se crean con newobj
. Normalmente se asignan como argumentos o variables locales, mediante newarr
(para matrices unidimensionales de base cero) o como campos de objetos. Una vez asignados, se inicializan mediante Initobj. Sin embargo, la newobj
instrucción se puede usar para crear una nueva instancia de un tipo de valor en la pila, que luego se puede pasar como un argumento, almacenarse en un local, etc.
OutOfMemoryException se produce si no hay memoria suficiente para satisfacer la solicitud.
MissingMethodException se produce si no se encontró un método ctor
constructor con el nombre indicado, la clase y la firma. 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 newobj
código de operación: