C 基礎知識 裝箱與拆箱

2022-01-29 21:38:18 字數 853 閱讀 3544

一、定義

裝箱:將值型別轉化為引用型別,裝箱一般會在堆上分配一塊記憶體,用於儲存要轉換的值。

拆箱:將引用型別轉化為值型別

注:.net 2.0 引入的泛型其實在很大的程度上解決了裝拆箱產生的型別轉換問題,也減少了型別轉換所引起的執行時的異常,及保證了型別安全,從而提高了效能。我們可以分別定義乙個arraylist(add方法的引數是object,在新增整數的時候,需要將int轉化為object型別,進行裝箱操作)和乙個泛型listlist,然後分別向這倆list中新增n多個數,測試下執行時間。

二、裝箱過程**

int i = 123;  /system.int32

object o = i;  //對 i 裝箱(隱式)進物件 o

從圖可知,物件 o 存的是位址引用,指向的是堆上的值,這個值的型別和變數 i 一樣,也是 int 型別,值(123)也就是從變數 i copy 過來的乙個副本值而已。

三、拆箱過程**

int i = 123;      //值型別

object o = i;    //裝箱

int j = (int)o;   //拆箱

要在執行時成功拆箱值型別,被拆箱的項必須是對乙個物件的引用,該物件是先前通過裝箱該值型別的例項建立的。

c 基礎 裝箱與拆箱

1.定義 裝箱 值型別轉換為引用型別。拆箱 引用型別轉換為值型別。關於值型別和引用型別,之前用了一篇文章來做了淺顯的討論 傻傻分不清楚 c 值型別 引用型別 2.細節討論 2.1裝箱 例子 object ojb 1 上面一行 是很簡單的裝箱,1是int型別,是值型別,隱式轉換為object引用型別。...

C 基礎 裝箱與拆箱

出處 裝箱是將值型別轉換為object型別或由此值型別實現的任何介面型別的過程。當 clr 對值型別進行裝箱時,會將該值包裝到 system.object 內部,再將後者儲存在託管堆上。取消裝箱將從物件中提取值型別。裝箱是隱式的 取消裝箱是顯式的。裝箱和取消裝箱的概念是型別系統 c 統一檢視的基礎,...

C 裝箱與拆箱

要掌握裝箱與拆箱,就必須了解cts及它的特點。net重要技術和基礎之一的cts common type system 顧名思義,cts就是為了實現在應用程式宣告和使用這些型別時必須遵循的規則而存在的通用型別系統。net將整個系統的型別分成兩大類 value type 和 reference type...