Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

OpCodes.Newobj (Campo)

Crea un nuevo objeto o una nueva instancia de un tipo de valor e inserta una referencia a objeto (de tipo O) en la pila de evaluación.

Espacio de nombres:  System.Reflection.Emit
Ensamblado:  mscorlib (en mscorlib.dll)

public static readonly OpCode Newobj

En la tabla siguiente, se muestra el ensamblado de la instrucción máquina en formato hexadecimal y en formato de Lenguaje intermedio de Microsoft (MSIL), junto con un breve resumen de referencia:

Format

Formato del ensamblado

Descripción

73 < T >

newobj ctor

Asigna un objeto o tipo de valor no inicializado y llama al método constructor ctor.

El comportamiento transicional de la pila es, por orden secuencial:

  1. Los argumentos de arg1 a argn se insertan en la pila por orden.

  2. Los argumentos de argn a arg1 se extraen de la pila y se pasan a ctor para la creación de objetos.

  3. Una referencia al nuevo objeto se inserta en la pila.

La instrucción newobj crea un nuevo objeto o una nueva instancia de un tipo de valor. Ctor es un token de metadatos (un methodref o methoddef que se debe marcar como un constructor) que indica el nombre, clase y firma del constructor al que se debe llamar.

La instrucción máquina newobj asigna una nueva instancia de la clase asociada a ctor e inicializa todos los campos de la nueva instancia en 0 (del tipo correcto) o en referencias nulas, según corresponda. Después, llama al constructor ctor con los argumentos dados junto con la instancia que acaba de crearse. Una vez que se ha llamado al constructor, la ya inicializada referencia a objeto (de tipo O) se inserta en la pila.

Desde la perspectiva del constructor, el objeto sin inicializar es el argumento 0 y los demás argumentos que se pasan a newobj le siguen, por orden.

Todas las matrices unidimensionales de base cero se crean mediante Newarr, no mediante newobj. Por otra parte, todas las demás matrices (de más de una dimensión o unidimensionales no de base cero) se crean mediante newobj.

Los tipos de valor no suelen crearse mediante newobj. Normalmente, se asignan como argumentos o variables locales, mediante newarr (para las matrices unidimensionales de base cero), o como campos de objetos. Una vez asignados, se inicializan mediante Initobj. No obstante, se puede utilizar la instrucción máquina newobj para crear una nueva instancia de un tipo de valor en la pila, que después puede pasarse como argumento, almacenarse en una variable local, etc.

Si no hay memoria suficiente para satisfacer la solicitud, se produce OutOfMemoryException.

Se produce MissingMethodException si no se encuentra un método constructor ctor con el nombre, la clase y la firma indicados. Normalmente, esto se detecta cuando las instrucciones del Lenguaje intermedio de Microsoft (MSIL) se convierten en código nativo, en lugar de detectarse en tiempo de ejecución.

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

  • ILGenerator.Emit(OpCode, ConstructorInfo)

.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft