次の方法で共有


OpCodes.Ldind_Ref フィールド

定義

オブジェクト参照を O 型 (オブジェクト参照) として評価スタックに間接的に読み込みます。

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 

フィールド値

注釈

次の表に、命令の 16 進数と Microsoft Intermediate Language (MSIL) アセンブリ形式と、簡単なリファレンスの概要を示します。

形式 アセンブリ形式 説明
50 ldind.ref アドレス addr のオブジェクト参照を型としてスタックに読み込みます O

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

  1. アドレスがスタックにプッシュされます。

  2. アドレスはスタックからポップされます。アドレスにあるオブジェクト参照がフェッチされます。

  3. フェッチされた参照がスタックにプッシュされます。

命令はldind.ref、指定されたアドレス (型 、&、または *) をオブジェクト参照を型 native intとしてOスタックに間接的に読み込みます。

ldindすべての命令は、対応する組み込み値クラスをLdobj指定する命令のショートカットです。

4 バイト未満の整数値は、評価スタックに int32 読み込まれると ( ではなく native int) に拡張されることに注意してください。 浮動小数点値は、評価スタックに F 読み込まれると型に変換されます。

正しい形式の Microsoft Intermediate Language (MSIL) を使用すると、ポインターの ldind 型と一致する方法で命令が使用されます。

最初にスタックにプッシュされたアドレスは、マシン上のオブジェクトの自然なサイズに合わせる必要があります。または NullReferenceException 、 が発生する可能性があります (予防措置については、プレフィックス命令を参照してください Unaligned )。 アドレス (や など) を返すすべての MSIL 命令の結果は、 LdlocaLdarga安全に調整されます。 1 バイトを超えるデータ型の場合、バイト順序はターゲット CPU に依存します。 バイト順序に依存するコードは、すべてのプラットフォームで実行されない場合があります。

NullReferenceException は、無効なアドレスが検出された場合にスローされる可能性があります。

Emit のメソッド オーバーロードでは、オペコードを ldind.ref 使用できます。

適用対象