情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

OpCodes.Ldflda フィールド

2013/12/12

参照が現在評価スタック上にあるオブジェクト内のフィールドのアドレスを検索します。

Namespace:  System.Reflection.Emit
アセンブリ:  mscorlib (mscorlib.dll 内)

public static readonly OpCode Ldflda

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

形式

アセンブリ形式

説明

7C < T >

ldflda field

指定したオブジェクト内の field のアドレスをスタックにプッシュします。

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

  1. オブジェクト参照 (またはポインター) がスタックにプッシュされます。

  2. オブジェクト参照 (またはポインター) がスタックからポップされます。オブジェクト内の指定したフィールドのアドレスが検索されます。

  3. 指定したフィールドのアドレスがスタックにプッシュされます。

ldflda 命令は、オブジェクト内で見つかったフィールドのアドレスをスタックにプッシュします。オブジェクトは、オブジェクト参照 (O 型)、マネージ ポインター (& 型)、アンマネージ ポインター (native int 型)、遷移ポインター (* 型)、または値型のインスタンスとしてスタック上に存在している必要があります。検証可能なコードでは、アンマネージ ポインターは使用できません。オブジェクトのフィールドは、フィールド メンバーを必ず参照しているメタデータ トークンによって指定されます。

ldflda の戻り値はマネージ ポインター (& 型) です。ただし、オブジェクトがアンマネージ ポインターとしてスタックにプッシュされる場合を除きます。この場合、返されるアドレスもアンマーネージ ポインター (native int 型) になります。

ldflda 命令の直前に、Unaligned プレフィックスと Volatile プレフィックスのどちらか、または両方を付けることができます。

オブジェクトが、そのオブジェクトのアクセス元であるアプリケーション ドメイン内にない場合は、InvalidOperationException がスローされます。アクセス元のアプリケーション ドメイン内にないフィールドのアドレスは、読み込むことができません。

オブジェクトが null であり、フィールドが静的ではない場合は、NullReferenceException がスローされます。

指定したフィールドがメタデータ内で見つからない場合は、MissingFieldException がスローされます。これは、通常、実行時ではなく、MSIL 命令がネイティブ コードに変換されるときにチェックされます。

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

  • ILGenerator.Emit(OpCode, FieldInfo)

Windows Phone OS

サポート: 8.0, 7.1

表示: