OpCodes.Unbox 欄位

定義

將實值類型的 boxed 表示轉換成它的 unboxed 形式。

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

欄位值

備註

下表列出指令的十六進位和 Microsoft 中繼語言 (MSIL) 元件格式,以及簡短的參考摘要:

格式 元件格式 Description
79 <T> unbox valType obj擷取實值型別數據,其 Boxed 表示法。

堆疊轉換行為依循序順序為:

  1. 對象參考會推送至堆疊。

  2. 對象參考會從堆疊快顯,並解壓縮至實值型別指標。

  3. 實值型別指標會推送至堆疊。

實值類型在 Common Language Infrastructure (CLI) 中有兩個不同的表示法:

  • 當實值型別內嵌在另一個物件內時,所使用的 'raw' 表單。

  • 'boxed' 窗體,其中實值型別中的數據會包裝在 (方塊化) 到 物件中,讓它可以以獨立實體的形式存在。

指令 unbox 會將對象參考 (類型) 、實值型 O 別的 Boxed 表示法,轉換為 managed 指標 (managed 指標、類型 &) 、其未收件匣形式。 提供的實值型別 () valType 是元數據標記,指出 Boxed 物件中包含的實值型別類型類型。

不同於 Box,需要複製實值型別的複本,才能在物件中使用, unbox 不需要從 對象複製實值型別。 一般而言,它只會計算已存在於 Boxed 物件內的實值型別位址。

InvalidCastException 如果物件不是 Boxed 做為 valType,則會擲回 。

NullReferenceException 如果物件參考為 Null 參考,則會擲回 。

TypeLoadException 如果找不到實值型別 valType ,則會擲回 。 當 Microsoft Intermediate Language (MSIL) 指令轉換成機器碼,而不是在運行時間時,通常會偵測到此情況。

下列 Emit 方法多載可以使用 unbox opcode:

適用於