次の方法で共有


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は、呼び出すコンストラクターのmethodrefmethoddef名前、クラス、およびシグネチャを示すメタデータ トークン (または コンストラクターとしてマークする必要がある) です。

命令は 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 使用できます。

適用対象