次の方法で共有


OpCodes.Initobj フィールド

特定のアドレスのオブジェクトのすべてのフィールドを null 参照または適切なプリミティブ型の 0 に初期化します。

Public Shared ReadOnly Initobj As OpCode
[C#]
public static readonly OpCode Initobj;
[C++]
public: static OpCode Initobj;
[JScript]
public static var Initobj : OpCode;

解説

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

形式 アセンブリ形式 説明
FE 15 < T > initobj classTok 値型を初期化します。

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

  1. 初期化するオブジェクトのアドレスがスタックにプッシュされます。
  2. アドレスがスタックからポップされ、指定したアドレスにある値型オブジェクトが classTok 型として初期化されます。

initobj 命令は、プッシュされたアドレス (natural int&* のいずれかの型) によって指定されたオブジェクトのすべてのフィールドを null 参照または適切なプリミティブ型の 0 に初期化します。このメソッドが呼び出されると、インスタンスはコンストラクタ メソッドの呼び出しに対応できる状態になります。アドレスが classTok によって表されたクラスのインスタンスへのポインタではない場合、または classTok が値型を表していない場合は、動作が指定されません。

Newobj とは異なり、コンストラクタ メソッドは、 initobj によっては呼び出されません。 Initobj が値型の初期化に使用されるのに対し、 newobj はオブジェクトの割り当てと初期化に使用されます。

initobj オペコードを使用できる Emit コンストラクタ オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode, Type)

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

OpCodes クラス | OpCodes メンバ | System.Reflection.Emit 名前空間