碰到這個問題兩次了,翻了兩次車的情況下總結一下裝箱和拆箱,這裡呢涉及到兩個東西,值型別還有引用型別
值型別是什麼:c#中的多數基本型別都是值型別,值型別包括簡單型別,列舉型別,結構型別
引用型別是什麼:引用型別表示指向資料的指標或引用,可儲存對實際資料的引用。引用型別
在記憶體中的儲存位置僅包含堆上物件的位址的引用引用型別包括類、介面、陣列、字串,引用類
型為null時,表示沒有引用任何物件。
好了,了解了上面這倆個東西之後就可以看看什麼是裝箱和拆箱了
裝箱和拆箱的過程會占用記憶體資源,因此都要盡量的避免使用裝箱和拆箱,
裝箱:將乙個值型別轉換成引用型別,那麼這個過程就是裝箱
int i=1; //宣告乙個int型的變數i
object obj=i; //
將這個值裝箱進乙個物件應用
拆箱:將乙個引用型別轉換成值型別,那麼這個過程就是拆箱
int i=1;object obj=i;
int j=(int) obj; //
執行拆箱操作
裝箱拆箱的過程都會極大的破壞程式的效能,我之前用的多的都是泛型操作,沒去深入的理解這個概念,用的少,也算是補償自己的一點不足之處吧
那麼拆箱跟裝箱的損失可以通過使用泛型集合類來補償,可以用list和dictory泛型來代替arraylist和hashtable,即使是list
也會比arraylist效能好
c 裝箱和拆箱
c 裝箱和拆箱 概念 裝箱 將值型別轉換為引用型別的過程叫做裝箱 值型別 引用型別 相反,拆箱 將引用型別轉換為值型別 叫做拆箱 引用型別 值型別 裝箱例子 int i 2008 object obj i console.writeline 1 i的值為,裝箱之後的值 i,obj i 927 con...
C 裝箱和拆箱
1 什麼是裝箱和拆箱 裝箱是將值型別轉換為引用型別 拆箱是將引用型別轉換為值型別 2 什麼時候需要裝箱?值型別是高效輕量的型別,因為預設情況下在堆上不包括他們的物件元件,然而,如果我們需要物件元件,這個時候就需要裝箱了。最常見的場景就是 乙個方法你希望能共用,設定的引數型別是object型別 引用型...
C 裝箱和拆箱
值型別例項進行裝箱時的步驟 1 在託管堆中分配記憶體。需要注意的是,由於是將值型別進行引用型別化,因而分配的記憶體空間除了值型別各個欄位所需的記憶體之外,還要加上託管堆所有物件都有的兩個額外成員 型別物件指標和同步塊索引 所需的記憶體。2 將值型別的字段複製到新分配的堆記憶體中。3 返回物件位址,即...