OpCodes.Newobj Feld

Definition

Erstellt ein neues Objekt oder eine neue Instanz eines Werttyps, wobei ein Objektverweis (Typ O) auf dem Auswertungsstapel abgelegt wird.Creates a new object or a new instance of a value type, pushing an object reference (type O) onto the evaluation stack.

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 

Feldwert

OpCode

Hinweise

In der folgenden Tabelle werden das hexadezimale und das MSIL-AssemblyFormat (Microsoft Intermediate Language) zusammen mit einer kurzen Verweis Zusammenfassung aufgelistet:The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

FormatFormat AssemblyFormatAssembly Format BESCHREIBUNGDescription
73 < T >73 < T > newobj ctornewobj ctor Ordnet ein nicht initialisiertes Objekt oder einen Werttyp zu und ruft die Konstruktormethode auf ctor .Allocates an uninitialized object or value type and calls the constructor method ctor.

Das Stapel Übergangs Verhalten ist in sequenzieller Reihenfolge:The stack transitional behavior, in sequential order, is:

  1. Argumente arg1 durch argn werden nacheinander in den Stapel verschoben.Arguments arg1 through argn are pushed on the stack in sequence.

  2. Argumente argn durch arg1 werden aus dem Stapel entfernt und ctor für die Objekt Erstellung an übergeben.Arguments argn through arg1 are popped from the stack and passed to ctor for object creation.

  3. Ein Verweis auf das neue-Objekt wird auf den Stapel verschoben.A reference to the new object is pushed onto the stack.

Die- newobj Anweisung erstellt ein neues-Objekt oder eine neue Instanz eines Werttyps.The newobj instruction creates a new object or a new instance of a value type. Ctor ein Metadatentoken ( methodref oder methoddef , das als Konstruktor gekennzeichnet werden muss), das den Namen, die Klasse und die Signatur des aufzurufenden Konstruktors angibt.Ctor is a metadata token (a methodref or methoddef that must be marked as a constructor) that indicates the name, class and signature of the constructor to call.

newobjMit der-Anweisung wird eine neue Instanz der-Klasse zugeordnet, die zugeordnet ist ctor , und alle Felder in der neuen-Instanz werden auf 0 (des richtigen Typs) oder NULL-Verweise nach Bedarf initialisiert.The newobj instruction allocates a new instance of the class associated with ctor and initializes all the fields in the new instance to 0 (of the proper type) or null references as appropriate. Anschließend wird der Konstruktor ctor mit den angegebenen Argumenten zusammen mit der neu erstellten Instanz aufgerufen.It then calls the constructor ctor with the given arguments along with the newly created instance. Nachdem der Konstruktor aufgerufen wurde, wird der jetzt initialisierte Objekt Verweis (Typ O ) auf dem Stapel abgelegt.After the constructor has been called, the now initialized object reference (type O) is pushed on the stack.

Aus Sicht des Konstruktors lautet das nicht initialisierte Objekt Argument 0, und die anderen Argumente, die an newobj übergeben werden, folgen in der angegebenen Reihenfolge.From the constructor's point of view, the uninitialized object is argument 0 and the other arguments passed to newobj follow in order.

Alle NULL basierten, eindimensionalen Arrays werden mithilfe von erstellt Newarr , nicht newobj .All zero-based, one-dimensional arrays are created using Newarr, not newobj. Andererseits werden alle anderen Arrays (mehr als eine Dimension oder eindimensional, aber nicht NULL basiert) mithilfe von erstellt newobj .On the other hand, all other arrays (more than one dimension, or one-dimensional but not zero-based) are created using newobj.

Werttypen werden in der Regel nicht mithilfe von erstellt newobj .Value types are not usually created using newobj. Sie werden in der Regel entweder als Argumente oder lokale Variablen zugewiesen, wobei newarr (bei Null-basierten, eindimensionalen Arrays) oder als Felder von Objekten verwendet wird.They are usually allocated either as arguments or local variables, using newarr (for zero-based, one-dimensional arrays), or as fields of objects. Nachdem Sie zugeordnet wurden, werden Sie mit initialisiert Initobj .Once allocated, they are initialized using Initobj. Allerdings newobj kann die-Anweisung verwendet werden, um eine neue Instanz eines Werttyps auf dem Stapel zu erstellen, die dann als Argument, in einem lokalen gespeichert usw., weitergegeben werden kann.However, the newobj instruction can be used to create a new instance of a value type on the stack, that can then be passed as an argument, stored in a local, and so on.

OutOfMemoryException wird ausgelöst, wenn nicht genügend Arbeitsspeicher vorhanden ist, um die Anforderung zu erfüllen.OutOfMemoryException is thrown if there is insufficient memory to satisfy the request.

MissingMethodException wird ausgelöst, wenn eine Konstruktormethode ctor mit dem angegeben Namen, der Klasse und der Signatur nicht gefunden werden konnte.MissingMethodException is thrown if a constructor method ctor with the indicated name, class and signature could not be found. Dies wird in der Regel erkannt, wenn MSIL-Anweisungen (Microsoft Intermediate Language) in systemeigenen Code konvertiert werden, anstatt zur Laufzeit.This is typically detected when Microsoft Intermediate Language (MSIL) instructions are converted to native code, rather than at runtime.

In der folgenden Emit Methoden Überladung kann der newobj Opcode verwendet werden:The following Emit method overload can use the newobj opcode:

Gilt für: