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:

形式Format アセンブリ形式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 遷移ポインター (型 * )、または値型のインスタンスとしてスタック上にある必要があります。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命令の前に、プレフィックスとプレフィックスのどちらかまたは両方を付けることができ Unaligned Volatile ます。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.

NullReferenceException オブジェクトが null で、フィールドが静的でない場合は、がスローされます。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:

適用対象