1.定義
裝箱:值型別轉換為引用型別。
拆箱:引用型別轉換為值型別。
關於值型別和引用型別,之前用了一篇文章來做了淺顯的討論:【傻傻分不清楚】c#值型別、引用型別 。
2.細節討論
2.1裝箱
例子:
object ojb = 1;
上面一行**是很簡單的裝箱,1是int型別,是值型別,隱式轉換為object引用型別。
執行裝箱操作時不可避免的要在堆上申請記憶體空間,並將堆疊上的值型別資料複製到申請的堆記憶體空間上,這肯定是要消耗記憶體和cpu資源的。
2.2拆箱
object obj = 1;
int a = (int)obj;
拆箱操作同樣需要額外消耗記憶體。
關於裝箱、拆箱更底層的東西,有大牛做了分析:c#裝箱拆箱
C 基礎 裝箱與拆箱
出處 裝箱是將值型別轉換為object型別或由此值型別實現的任何介面型別的過程。當 clr 對值型別進行裝箱時,會將該值包裝到 system.object 內部,再將後者儲存在託管堆上。取消裝箱將從物件中提取值型別。裝箱是隱式的 取消裝箱是顯式的。裝箱和取消裝箱的概念是型別系統 c 統一檢視的基礎,...
C 裝箱與拆箱
要掌握裝箱與拆箱,就必須了解cts及它的特點。net重要技術和基礎之一的cts common type system 顧名思義,cts就是為了實現在應用程式宣告和使用這些型別時必須遵循的規則而存在的通用型別系統。net將整個系統的型別分成兩大類 value type 和 reference type...
C 裝箱與拆箱
裝箱是將 值型別轉換為 引用型別 拆箱是將 引用型別 轉換為值型別 利用裝箱和拆箱功能,可通過允許 值型別的任何值與 object 型別 的值相互轉換,將值型別與引用型別鏈結起來 例如 int val 100 object obj val console.writeline 物件的值 obj 這是乙...