次の方法で共有


OpCodes.Box フィールド

値型をオブジェクト参照 (O 型) に変換します。

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

解説

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

形式 アセンブリ形式 説明
8C < T > box valTypeToken 値型 (valTypeToken で指定した型) を true オブジェクト参照に変換します。

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

  1. 値型がスタックにプッシュされます。
  2. スタックから値型がポップされます。 box 演算が実行されます。
  3. 結果として得られる "ボックス化された" 値型がスタックにプッシュされます。

値型には Common Language Infrastructure (CLI) 内に次の 2 つの別個の形式があります。

  • "生" の形式。値型が他のオブジェクト内またはスタックに埋め込まれている場合に使用されます。
  • "ボックス化された" 形式。値型の中のデータは、独立したエンティティとして存在できるように、オブジェクトにラップ (ボックス化) されます。

box 命令は、"生の" (ボックス化が解除された) 値型をオブジェクト参照 (O 型) に変換します。このためには、新しいオブジェクトを作成し、値型から新しく割り当てられたオブジェクトにデータをコピーします。 valTypeToken は、スタックの値型を示すメタデータ トークンです。

要求を満たすにはメモリが不足している場合は、 OutOfMemoryException がスローされます。

クラスが見つからない場合は、 TypeLoadException がスローされます。これは、通常、実行時ではなく、MSIL (Microsoft intermediate language) がネイティブ コードに変換されるときに検出されます。

box オペコードを使用できる 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 名前空間