OpCodes.Box OpCodes.Box OpCodes.Box OpCodes.Box Field


値型をオブジェクト参照 (O 型) に変換します。Converts a value type to an object reference (type O).

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



次の表は、命令の 16 進数と簡単なリファレンス概要と共に、Microsoft Intermediate Language (MSIL) アセンブリの形式を示します。The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

形式Format アセンブリの形式Assembly Format 説明Description
8C < T >8C < T > ボックス valTypeTokenbox valTypeToken 値の型変換 (で指定された型のvalTypeToken) を真のオブジェクト参照。Convert a value type (of the type specified in valTypeToken) to a true object reference.

履歴の移行動作を順番には。The stack transitional behavior, in sequential order, is:

  1. 値の型は、スタックにプッシュされます。A value type is pushed onto the stack.

  2. 値の型がスタックからポップされます。box操作を実行します。The value type is popped from the stack; the box operation is performed.

  3. 結果として得られる「ボックス化された」の値の型へのオブジェクト参照は、スタックにプッシュされます。An object reference to the resulting "boxed" value type is pushed onto the stack.

値型では、共通言語基盤 (CLI) 内に 2 つの個別の表現があります。A value type has two separate representations within the Common Language Infrastructure (CLI):

  • 値の型が別のオブジェクト、スタックの上に埋め込まれている場合に使用される '生' のフォームです。A 'raw' form used when a value type is embedded within another object or on the stack.

  • 場所、値の型のデータにラップされます (手書き) オブジェクトのため、個別のエンティティとして存在する可能性が 'ボックス化' の形式。A 'boxed' form, where the data in the value type is wrapped (boxed) into an object so it can exist as an independent entity.

box命令は、オブジェクト参照に、'raw' (ボックス化解除された) 値の型を変換します (型O)。The box instruction converts the 'raw' (unboxed) value type into an object reference (type O). これは、新しいオブジェクトを作成し、新しく割り当てられたオブジェクトに値の型からデータをコピーして実行されます。This is accomplished by creating a new object and copying the data from the value type into the newly allocated object. valTypeToken スタックに値型の型をメタデータ トークンを示すです。valTypeToken is a metadata token indicating the type of the value type on the stack.

OutOfMemoryException 要求に対応する十分なメモリがある場合にスローされます。OutOfMemoryException is thrown if there is insufficient memory to satisfy the request.

TypeLoadException クラスが見つからない場合にスローされます。TypeLoadException is thrown if the class cannot be found. これは、通常、Microsoft Intermediate Language (MSIL) がランタイムではなくネイティブ コードに変換されるときに検出します。This is typically detected when Microsoft Intermediate Language (MSIL) is converted to native code, rather than at runtime.

Emitメソッドのオーバー ロードを使用できる、 box opcode:The following Emit method overload can use the box opcode:

  • ILGenerator.Emit(OpCode, Type)ILGenerator.Emit(OpCode, Type)