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) アセンブリ形式と、簡単な参照の概要を示します。

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

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

  1. を介したarg1argn引数は、順番にスタックにプッシュされます。

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

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

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

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

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

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

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

OutOfMemoryException は、要求を満たすメモリが不足している場合にスローされます。

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

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

適用対象