OpCodes.Newobj フィールド

定義

新しいオブジェクトまたは値型の新しいインスタンスを作成し、オブジェクト参照 (型 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 

フィールド値

注釈

次の表に、命令の 16 進数および Microsoft Intermediate Language (MSIL) アセンブリ形式と、簡単なリファレンス概要を示します。

フォーマット アセンブリ形式 Description
73 <T> Newobj ctor 初期化されていないオブジェクトまたは値の型を割り当て、コンストラクター メソッドを ctor呼び出します。

スタック遷移の動作は、順番に次のようになります。

  1. arg1を介してargn引数がスタックに順番にプッシュされます。

  2. argn arg1引数はスタックからポップされ、オブジェクトの作成のためにctorに渡されます。

  3. 新しいオブジェクトへの参照がスタックにプッシュされます。

newobj命令は、新しいオブジェクトまたは値型の新しいインスタンスを作成します。 Ctor は、呼び出すコンストラクターの名前、クラス、およびシグネチャを示すメタデータ トークン (コンストラクターとしてマークする必要がある methodref または methoddef ) です。

newobj命令は、ctorに関連付けられているクラスの新しいインスタンスを割り当て、新しいインスタンス内のすべてのフィールドを適切な型の 0 または null 参照に適切に初期化します。 その後、新しく作成されたインスタンスと共に、指定された引数を使用してコンストラクター ctor を呼び出します。 コンストラクターが呼び出されると、初期化されたオブジェクト参照 (型 O) がスタックにプッシュされます。

コンストラクターの観点からは、初期化されていないオブジェクトは引数 0 であり、newobj に渡される他の引数は順番に従います。

0 から始まる 1 次元配列はすべて、Newarrではなく、newobjを使用して作成されます。 一方、他のすべての配列 (複数の次元または 1 次元が 0 から始まっていない) は、 newobjを使用して作成されます。

値型は通常、 newobjを使用して作成されません。 通常、引数またはローカル変数として、 newarr (0 から始まる 1 次元配列の場合) またはオブジェクトのフィールドとして割り当てられます。 割り当てられると、 Initobjを使用して初期化されます。 ただし、 newobj 命令を使用して、スタック上に値型の新しいインスタンスを作成し、引数として渡したり、ローカルに格納したりできます。

OutOfMemoryException は、要求を満たすのに十分なメモリがない場合にスローされます。

MissingMethodException は、指定された名前、クラス、およびシグネチャを持つコンストラクター メソッド ctor が見つからなかった場合にスローされます。 これは通常、Microsoft Intermediate Language (MSIL) 命令が実行時ではなくネイティブ コードに変換されるときに検出されます。

次の Emit メソッドオーバーロードでは、 newobj オペコードを使用できます。

適用対象