c 裝箱和拆箱

2021-06-08 18:49:49 字數 664 閱讀 6094

c#裝箱和拆箱

概念:裝箱:將值型別轉換為引用型別的過程叫做裝箱  值型別->引用型別

相反,拆箱:將引用型別轉換為值型別 叫做拆箱     引用型別->值型別

裝箱例子:

int i = 2008;

object obj = i;

console.writeline("1 i的值為,裝箱之後的值",i,obj);

i = 927;

console.writeline("1 i的值為,裝箱之後的值", i, obj);

console.readline();

結果: 2008    2008

927   2008

從程式執行的結果可以看出,值型別變數的值複製到裝箱得到的物件中,裝箱後改變值型別變數的值,並不會影響裝箱物件的值。

拆箱例子:

int i = 112;

object obj = i;

console.writeline("1 i的值為,裝箱之後的值", i, obj);

//拆箱

int j = (int)obj;

console.writeline("1 i的值為,裝箱之後的值", i, j);

console.readline();

從結果中看出,拆箱後得到的值型別資料的值與裝箱物件相等。

C 裝箱和拆箱

1 什麼是裝箱和拆箱 裝箱是將值型別轉換為引用型別 拆箱是將引用型別轉換為值型別 2 什麼時候需要裝箱?值型別是高效輕量的型別,因為預設情況下在堆上不包括他們的物件元件,然而,如果我們需要物件元件,這個時候就需要裝箱了。最常見的場景就是 乙個方法你希望能共用,設定的引數型別是object型別 引用型...

C 裝箱和拆箱

值型別例項進行裝箱時的步驟 1 在託管堆中分配記憶體。需要注意的是,由於是將值型別進行引用型別化,因而分配的記憶體空間除了值型別各個欄位所需的記憶體之外,還要加上託管堆所有物件都有的兩個額外成員 型別物件指標和同步塊索引 所需的記憶體。2 將值型別的字段複製到新分配的堆記憶體中。3 返回物件位址,即...

C 裝箱和拆箱

裝箱用於描述把乙個值型別轉換為引用型別。執行庫會為堆上的物件建立乙個臨時的引用型別 箱子 int myage 30 object myobj myage boxing拆箱用於描述相反的過程,就是把裝箱的值型別強制轉換回值型別。這裡使用術語 強制轉換 因為轉換是顯示進行的。其語法類似於前面的裝箱 in...