次の方法で共有


OpCodes.Ldfld フィールド

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

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

解説

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

形式 アセンブリ形式 説明
7B < T > ldfld field 指定したオブジェクト内のフィールドの値をスタックにプッシュします。

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

  1. オブジェクト参照 (またはポインタ) がスタックにプッシュされます。
  2. オブジェクト参照 (またはポインタ) がスタックからポップされます。オブジェクト内の指定したフィールドの値が検索されます。
  3. フィールドに格納されている値がスタックにプッシュされます。

ldfld 命令は、オブジェクト内で見つかったフィールドの値をスタックにプッシュします。オブジェクトは、オブジェクト参照 (O 型)、マネージ ポインタ (& 型)、アンマネージ ポインタ (natural int 型)、遷移ポインタ (* 型)、または値型のインスタンスとしてスタック上に存在している必要があります。確認可能なコードでは、アンマネージ ポインタは使用できません。オブジェクトのフィールドは、フィールド メンバを必ず参照しているメタデータ トークンによって指定されます。戻り値の型は、フィールドに関連付けられた型と同じです。フィールドには、インスタンス フィールドまたは静的フィールドを使用できます。インスタンス フィールドの場合、オブジェクトは null 参照以外である必要があります。

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

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

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

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

  • ILGenerator.Emit(OpCode, FieldInfo)

必要条件

プラットフォーム: 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 名前空間