OpCodes.Newobj Veld
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee maakt u een nieuw object of een nieuw exemplaar van een waardetype, waarbij een objectverwijzing (type O) naar de evaluatiestack wordt gepusht.
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
Waarde van veld
Opmerkingen
De volgende tabel bevat de hexadecimale en Microsoft MSIL-assembly-indeling (Tussenliggende taal), samen met een beknopt overzicht:
| Format | Assembly-indeling | Description |
|---|---|---|
73 <T> |
newobj ctor |
Wijst een niet-geïnitialiseerd object of waardetype toe en roept de constructormethode ctoraan. |
Het overgangsgedrag van de stack, in opeenvolgende volgorde, is:
Argumenten
arg1die worden doorlopenargn, worden in volgorde op de stapel gepusht.arg1Argumentenargnworden opgehaald uit de stack en doorgegeven aanctorvoor het maken van objecten.Een verwijzing naar het nieuwe object wordt naar de stapel gepusht.
Met de newobj instructie maakt u een nieuw object of een nieuw exemplaar van een waardetype.
Ctor is een metagegevenstoken (een methodref of methoddef dat moet worden gemarkeerd als een constructor) die de naam, klasse en handtekening aangeeft van de constructor die moet worden aangeroepen.
De newobj instructie wijst een nieuw exemplaar van de klasse toe die is gekoppeld aan ctor en initialiseert alle velden in het nieuwe exemplaar aan 0 (van het juiste type) of null-verwijzingen, indien van toepassing. Vervolgens wordt de constructor ctor aangeroepen met de opgegeven argumenten, samen met de zojuist gemaakte instantie. Nadat de constructor is aangeroepen, wordt de nu geïnitialiseerde objectverwijzing (type O) op de stack gepusht.
Vanuit het oogpunt van de constructor is het niet-geïnitialiseerde object argument 0 en volgen de andere argumenten die worden doorgegeven aan newobj in volgorde.
Alle op nul gebaseerde, eendimensionale matrices worden gemaakt met , Newarrniet newobj. Aan de andere kant worden alle andere matrices (meer dan één dimensie of eendimensionaal maar niet op nul gebaseerd) gemaakt met behulp van newobj.
Waardetypen worden meestal niet gemaakt met behulp van newobj. Ze worden meestal toegewezen als argumenten of lokale variabelen, waarbij ze worden gebruikt newarr (voor op nul gebaseerde, eendimensionale matrices) of als velden van objecten. Zodra ze zijn toegewezen, worden ze geïnitialiseerd met behulp van Initobj. De newobj instructie kan echter worden gebruikt om een nieuw exemplaar van een waardetype op de stack te maken, dat vervolgens kan worden doorgegeven als argument, opgeslagen in een lokale, enzovoort.
OutOfMemoryException wordt gegenereerd als er onvoldoende geheugen is om aan de aanvraag te voldoen.
MissingMethodException wordt gegenereerd als een constructormethode ctor met de aangegeven naam, klasse en handtekening niet kan worden gevonden. Dit wordt meestal gedetecteerd wanneer Microsoft MSIL-instructies (Intermediate Language) worden geconverteerd naar systeemeigen code in plaats van tijdens runtime.
De volgende Emit overbelasting van de methode kan de newobj opcode gebruiken: