OpCodes.Newobj フィールド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
新しいオブジェクトまたは値型の新しいインスタンスを作成し、オブジェクト参照 (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 を呼び出します。 |
スタック遷移の動作は、順番に次のようになります。
を介した
arg1
argn
引数は、順番にスタックにプッシュされます。を介した
argn
arg1
引数はスタックからポップされ、オブジェクトの作成のために にctor
渡されます。新しいオブジェクトへの参照がスタックにプッシュされます。
命令は 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
使用できます。
適用対象
.NET