次の方法で共有


OpCodes.Stloc フィールド

評価スタックの一番上から現在の値をポップし、指定したインデックスのローカル変数リストに格納します。

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

解説

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

形式 アセンブリ形式 説明
FE 0E < unsigned int16 > stloc index スタックから値をポップし、ローカル変数 index に格納します。

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

  1. 値がスタックからポップされ、ローカル変数 index に配置されます。

stloc 命令は、評価スタックの一番上の値をポップし、ローカル変数番号 index にその値を移動します。ローカル変数の番号は 0 から始まります。値の型は、現在のメソッドのローカル シグネチャで指定されているローカル変数の型と一致している必要があります。

4 バイト長より小さい整数値を保持しているローカルに格納すると、スタックからローカル変数に移動するときに値が切り詰められます。浮動小数点値は、ネイティブ サイズ (F 型) から引数に関連付けられたサイズに丸められます。

正しい MSIL (Microsoft Intermediate Language) 命令では、index が有効なローカル インデックスであることが要求されます。 stloc 命令の場合、index は 0 ~ 65,534 の範囲内である必要があります。65,535 は無効です。65,535 を無効とすることには、実際上の理由があります。実装では、2 バイト整数を使用して、ローカルのインデックスおよび指定したメソッドのローカルの合計数の両方を追跡する場合があるためです。インデックス 65,535 を有効にすると、指定したメソッドのローカル数を追跡するために、より広い範囲の整数を使用する必要があります。

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

  • ILGenerator.Emit(OpCode, LocalBuilder)
  • ILGenerator.Emit(OpCode, short)

必要条件

プラットフォーム: 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 名前空間