次の方法で共有


OpCodes.Ldelema フィールド

指定した配列インデックスにある配列要素のアドレスを & 型 (マネージ ポインタ) として評価スタックの一番上に読み込みます。

Public Shared ReadOnly Ldelema As OpCode
[C#]
public static readonly OpCode Ldelema;
[C++]
public: static OpCode Ldelema;
[JScript]
public static var Ldelema : OpCode;

解説

命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。

形式 アセンブリ形式 説明
8F < T > ldelema class index にある配列要素のアドレスを & 型 (マネージ ポインタ) として評価スタックの一番上に読み込みます。

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

  1. オブジェクト参照 array がスタックにプッシュされます。
  2. インデックス値 index がスタックにプッシュされます。
  3. index と array がスタックからポップされます。array の index の位置に格納されているアドレスが検索されます。
  4. アドレスがスタックにプッシュされます。

ldelema を使用してオブジェクト (class 型) の配列の特定のインデックスにあるオブジェクトのアドレスを取得します。 ldelema 命令は、インデックス番号が 0 から始まる 1 次元配列 array 内のインデックス index (natural int 型) の値のアドレスを読み込み、スタックの一番上に配置します。配列はオブジェクトであるため、 O 型の値によって表されます。値は、命令と共に渡された class 型である必要があります。

ldelema の戻り値は、マネージ ポインタ (& 型) です。

4 バイト未満の整数値は、評価スタックに読み込まれるときに、 natural int ではなく、 int32 に拡張されます。

array が null 参照である場合は、 NullReferenceException がスローされます。

array が必要な型の要素を保持していない場合は、 ArrayTypeMismatchException がスローされます。

index が負の値である場合、または array の上限を超える場合は、 IndexOutOfRangeException がスローされます。

ldelema オペコードを使用できる Emit コンストラクタ オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode, Type)

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

OpCodes クラス | OpCodes メンバ | System.Reflection.Emit 名前空間