OpCodes.Newobj フィールドとは? わかりやすく解説

OpCodes.Newobj フィールド

新しオブジェクトまたは値型新しインスタンス作成しオブジェクト参照 (O 型) を評価スタックプッシュます。

名前空間: System.Reflection.Emit
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

解説解説

命令16 進数形式MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します

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

  1. 引数 arg1argn が、順番スタックプッシュされます

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

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

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

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

コンストラクタ視点から見ると、初期化されていないオブジェクト引数 0 であり、newobj に渡されその他の引数順番続きます

インデックス番号が 0 から始まるすべての 1 次元配列は、newobj ではなく、Newarr を使用して作成されます。これに対しその他のすべての配列 (多次元配列またはインデックス番号が 0 以外から始まる 1 次元配列) は、newobj使用して作成されます。

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

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

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

newobj オペコード使用できる Emit メソッド オーバーロード次に示します

  • ILGenerator.Emit(OpCode, ConstructorInfo)

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
OpCodes クラス
OpCodes メンバ
System.Reflection.Emit 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「OpCodes.Newobj フィールド」の関連用語

OpCodes.Newobj フィールドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



OpCodes.Newobj フィールドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS