OpCodes.Ldflda フィールド

定義

参照が現在評価スタック上にあるオブジェクト内のフィールドのアドレスを検索します。Finds the address of a field in the object whose reference is currently on the evaluation stack.

public: static initonly System::Reflection::Emit::OpCode Ldflda;
public static readonly System.Reflection.Emit.OpCode Ldflda;
 staticval mutable Ldflda : System.Reflection.Emit.OpCode
Public Shared ReadOnly Ldflda As OpCode 

フィールド値

OpCode

注釈

次の表は、命令の16進形式と Microsoft 中間言語 (MSIL) のアセンブリ形式と、簡単なリファレンスの概要を示しています。The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

FormatFormat アセンブリ形式Assembly Format 説明Description
7C < T >7C < T > ldflda fieldldflda field 指定したオブジェクトの field のアドレスをスタックにプッシュします。Pushes the address of field in a specified object onto the stack.

スタックの移行動作は、次の順序で実行されます。The stack transitional behavior, in sequential order, is:

  1. オブジェクト参照 (またはポインター) がスタックにプッシュされます。An object reference (or pointer) is pushed onto the stack.

  2. オブジェクト参照 (またはポインター) がスタックからポップされます。オブジェクト内の指定されたフィールドのアドレスが見つかりました。The object reference (or pointer) is popped from the stack; the address of the specified field in the object is found.

  3. 指定されたフィールドのアドレスがスタックにプッシュされます。The address of the specified field is pushed onto the stack.

ldflda 命令は、オブジェクトにあるフィールドのアドレスをスタックにプッシュします。The ldflda instruction pushes the address of a field located in an object onto the stack. オブジェクトは、オブジェクト参照 (型 O)、マネージポインター (型 &)、アンマネージポインター (型 native int)、transient ポインター (型 *)、または値型のインスタンスとしてスタック上にある必要があります。The object must be on the stack as an object reference (type O), a managed pointer (type &), an unmanaged pointer (type native int), a transient pointer (type *), or an instance of a value type. アンマネージポインターを使用することは、検証可能なコードでは許可されていません。The use of an unmanaged pointer is not permitted in verifiable code. オブジェクトのフィールドは、フィールドメンバーを参照する必要があるメタデータトークンによって指定されます。The object's field is specified by a metadata token that must refer to a field member.

オブジェクトがアンマネージポインターとしてスタックにプッシュされる場合を除き、ldflda によって返される値はマネージポインター (型 &) です。この場合、戻りアドレスもアンマネージポインター (型 native int) になります。The value returned by ldflda is a managed pointer (type &) unless the object is pushed onto the stack as an unmanaged pointer, in which case the return address is also an unmanaged pointer (type native int).

ldflda 命令の前には、UnalignedVolatile プレフィックスのいずれかまたは両方を付けることができます。The ldflda instruction can be preceded by either or both of the Unaligned and Volatile prefixes.

オブジェクトがアクセス元のアプリケーションドメイン内にない場合、InvalidOperationException がスローされます。InvalidOperationException is thrown if the object is not within the application domain from which it is being accessed. アクセスしているアプリケーションドメインに含まれていないフィールドのアドレスを読み込むことができません。The address of a field that is not inside the accessing application domain cannot be loaded.

オブジェクトが null で、フィールドが静的でない場合、NullReferenceException がスローされます。NullReferenceException is thrown if the object is null and the field is not static.

指定されたフィールドがメタデータ内に見つからない場合、MissingFieldException がスローされます。MissingFieldException is thrown if the specified field is not found in the metadata. これは通常、Microsoft 中間言語 (MSIL) 命令が実行時ではなくネイティブコードに変換された場合にチェックされます。This is typically checked when Microsoft Intermediate Language (MSIL) instructions are converted to native code, not at run time.

次の Emit メソッドオーバーロードは、ldflda オペコードを使用できます。The following Emit method overload can use the ldflda opcode:

適用対象