OpCodes.Ldflda Campo

Definizione

Trova l'indirizzo di un campo nell'oggetto il cui riferimento si trova attualmente nello stack di valutazione.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 

Valore del campo

OpCode

Commenti

Nella tabella seguente sono elencati i formati di assembly esadecimale e MSIL (Microsoft Intermediate Language) dell'istruzione, oltre a un breve riepilogo di riferimento:The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

FormatoFormat Formato assemblyAssembly Format DescrizioneDescription
7C < T >7C < T > ldflda fieldldflda field Inserisce l'indirizzo di field in un oggetto specificato nello stack.Pushes the address of field in a specified object onto the stack.

Il comportamento di transizione dello stack, in ordine sequenziale, è:The stack transitional behavior, in sequential order, is:

  1. Viene eseguito il push di un riferimento a un oggetto (o puntatore) nello stack.An object reference (or pointer) is pushed onto the stack.

  2. Il riferimento a un oggetto (o puntatore) viene estratto dallo stack; è stato trovato l'indirizzo del campo specificato nell'oggetto.The object reference (or pointer) is popped from the stack; the address of the specified field in the object is found.

  3. L'indirizzo del campo specificato viene inserito nello stack.The address of the specified field is pushed onto the stack.

L' ldflda istruzione inserisce l'indirizzo di un campo che si trova in un oggetto nello stack.The ldflda instruction pushes the address of a field located in an object onto the stack. L'oggetto deve essere nello stack come un riferimento a un oggetto (tipo O ), un puntatore gestito (tipo & ), un puntatore non gestito (tipo native int ), un puntatore temporaneo (tipo * ) o un'istanza di un tipo di valore.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. L'uso di un puntatore non gestito non è consentito nel codice verificabile.The use of an unmanaged pointer is not permitted in verifiable code. Il campo dell'oggetto è specificato da un token di metadati che deve fare riferimento a un membro del campo.The object's field is specified by a metadata token that must refer to a field member.

Il valore restituito da ldflda è un puntatore gestito (tipo & ), a meno che l'oggetto non venga inserito nello stack come puntatore non gestito, nel qual caso l'indirizzo restituito è anche un puntatore non gestito (tipo 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).

L' ldflda istruzione può essere preceduta da uno o entrambi i Unaligned Volatile prefissi e.The ldflda instruction can be preceded by either or both of the Unaligned and Volatile prefixes.

InvalidOperationException viene generata se l'oggetto non si trova all'interno del dominio dell'applicazione da cui viene eseguito l'accesso.InvalidOperationException is thrown if the object is not within the application domain from which it is being accessed. Non è possibile caricare l'indirizzo di un campo che non si trova all'interno del dominio dell'applicazione di accesso.The address of a field that is not inside the accessing application domain cannot be loaded.

NullReferenceException viene generata se l'oggetto è null e il campo non è statico.NullReferenceException is thrown if the object is null and the field is not static.

MissingFieldException viene generata se il campo specificato non viene trovato nei metadati.MissingFieldException is thrown if the specified field is not found in the metadata. Questa operazione viene in genere verificata quando le istruzioni MSIL (Microsoft Intermediate Language) vengono convertite in codice nativo, non in fase di esecuzione.This is typically checked when Microsoft Intermediate Language (MSIL) instructions are converted to native code, not at run time.

L' Emit Overload del metodo seguente può usare il ldflda codice operativo:The following Emit method overload can use the ldflda opcode:

Si applica a