Sdílet prostřednictvím


OpCodes.Ldind_Ref Pole

Definice

Nepřímo načte odkaz na objekt jako typ O (odkaz na objekt) do vyhodnocovacího zásobníku.

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

Hodnota pole

Poznámky

Následující tabulka uvádí šestnáctkový formát sestavení instrukce a formát sestavení MSIL (Microsoft Intermediate Language) spolu se stručným přehledem referencí:

Formát Formát sestavení Description
50 ldind.ref Načte odkaz na objekt na adrese addr do zásobníku jako typ. O

Přechodné chování zásobníku v sekvenčním pořadí je:

  1. Adresa se vloží do zásobníku.

  2. Adresa se vynořila ze zásobníku; načte se odkaz na objekt umístěný na adrese.

  3. Načtený odkaz se vloží do zásobníku.

Instrukce ldind.ref nepřímo načte objekt odkaz na zadanou adresu (typu native int, &nebo *) do zásobníku jako typ O.

ldind Všechny instrukce jsou zkratky pro Ldobj instrukce, která určuje odpovídající předdefinované hodnotové třídy.

Všimněte si, že celočíselné hodnoty menší než 4 bajty jsou při načtení do vyhodnocovacího zásobníku rozšířeny na int32 (ne native int). Hodnoty s plovoucí desetinou čárkou se při načtení do F zásobníku vyhodnocení převedou na typ.

Správně vytvořený jazyk MSIL (Microsoft Intermediate Language) zajišťuje, že ldind se instrukce použijí způsobem konzistentním s typem ukazatele.

Adresa původně vložená do zásobníku musí být zarovnaná s přirozenou NullReferenceException velikostí objektů na počítači, jinak může dojít k chybě (viz Unaligned instrukce předpony pro preventivní opatření). Výsledky všech instrukcí jazyka MSIL, Ldloca které vracejí adresy (například a Ldarga), jsou bezpečně zarovnané. U datových typů větších než 1 bajt závisí pořadí bajtů na cílovém procesoru. Kód, který závisí na pořadí bajtů, nemusí běžet na všech platformách.

NullReferenceException může být vyvolána, pokud je zjištěna neplatná adresa.

Následující Emit přetížení metody může použít ldind.ref opcode:

Platí pro