C 裝箱和拆箱原理詳解

2022-09-26 07:09:12 字數 478 閱讀 7567

.net包含乙個特殊的object類,可以接受任意的資料型別的值,當所傳遞或所賦值的型別不是乙個特定的資料型別時,object類就提供了一種傳遞引數和賦值的通用方法。賦給object的值必須作為引用型別,並存放砸www.cppcns.com託管堆中。

裝箱:int age =www.cppcns.com 24;

object refage= ag程式設計客棧e;

可以看的出,第一條語句建立乙個變數age,並將值放在託管棧中;

第二條語句將age的值賦給引用型別。它將值24放在託管堆中。

這個值型別包裝為引用型別的過程,稱為裝箱。

拆箱:相反,將引用型別轉換為值型別的過程稱為拆箱。拆箱將對物件程式設計客棧強制轉換為原來的型別。對前面的物件進行拆箱。

int  newage = (int) refage;

string newage =(string) refage;

拆箱的值必須和它要轉換的目標的變數有相同的型別。

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 返回物件位址,即...