裝箱(box)就是將值型別轉換為引用型別的過程。而相反的過程就叫拆箱(unbox)。
一、裝箱操作
例如:
int val = 100;
object obj = val;
console.writeline (「物件的值 = ", obj);
這是乙個裝箱的過程,是將值型別轉換為引用型別的過程。
值型別被裝箱時發生了什麼?
(1)在堆上分配記憶體。因為值型別最終有乙個物件代表,所有堆上分配的記憶體量必須是值型別的大小加上容納此物件及其內部結構(比如虛擬方法表)所需的記憶體量。
(2)值型別的值被複製到新近分配的記憶體中
(3)新近分配的物件位址被放到堆疊上,現在它指向乙個引用型別。
二、拆箱操作
在剛才程式的基礎上,再加一句話變成:
int val = 100;
object obj = val;
int num = (int) obj;
console.writeline ("num: ", num);
這是乙個拆箱的過程,是將值型別轉換為引用型別,再由引用型別轉換為值型別的過程。
注:被裝過箱的物件才能被拆箱。
在裝箱的時候,並不需要顯示型別轉換。但在拆箱時需要型別轉換。這是因為在拆箱時物件可以被轉換為任何型別。
注意:裝箱操作可以隱式進行,但拆箱操作必須顯示。
首先,檢查這個物件例項,看它是否為給定值型別的裝箱值。
然後,把這個例項的值拷貝給值型別的變數。
詳解C 裝箱與拆箱
裝箱 box 就是將值型別轉換為引用型別的過程。而相反的過程就叫拆箱 unbox 一 裝箱操作 例如 int val 100 object obj val console.writeline 物件的值 obj 這是乙個裝箱的過程,是將值型別轉換為引用型別的過程。值型別被裝箱時發生了什麼?1 在堆上分...
C 裝箱與拆箱
要掌握裝箱與拆箱,就必須了解cts及它的特點。net重要技術和基礎之一的cts common type system 顧名思義,cts就是為了實現在應用程式宣告和使用這些型別時必須遵循的規則而存在的通用型別系統。net將整個系統的型別分成兩大類 value type 和 reference type...
C 裝箱與拆箱
裝箱是將 值型別轉換為 引用型別 拆箱是將 引用型別 轉換為值型別 利用裝箱和拆箱功能,可通過允許 值型別的任何值與 object 型別 的值相互轉換,將值型別與引用型別鏈結起來 例如 int val 100 object obj val console.writeline 物件的值 obj 這是乙...