裝箱和取消裝箱使值類型能夠被視為對象。
對值類型裝箱將把該值類型打包到 Object 引用類型的壹個實例中。
這使得值類型可以存儲於垃圾回收堆中。
取消裝箱將從對象中提取值類型。
裝箱是值類型到object類型或到此值類型所實現的任何接口類型的隱式轉換。
對值類型裝箱會在堆中分配壹個對象實例,並將該值復制到新的對象中。
取消裝箱是從 object 類型到值類型或從接口類型到實現該接口的值類型的顯式轉換。
取消裝箱操作包括:
檢查對象實例,確保它是給定值類型的壹個裝箱值。
將該值從實例復制到值類型變量中。
要在運行時成功取消裝箱值類型,
被取消裝箱的項必須是對壹個對象的引用,
該對象是先前通過裝箱該值類型的實例創建的。
嘗試對 null 或對不兼容值類型的引用進行取消裝箱操作,將導致 InvalidCastException。
裝箱和拆箱是為了編程模式的簡單,任何對象都應當可以賦給Object,
對於引用類型賦給Object沒問題,都是引用類型,只是壹個引用的賦值,
但是值類型賦給Object就有問題了,因為值類型沒有引用,
為了造出壹個引用,也就有了裝箱。