拆箱和裝箱

2021-09-27 12:51:07 字數 848 閱讀 9588

1、拆箱和裝箱,我們都知道的是

裝箱:就是將值型別轉換為引用型別

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

2、那麼看下面乙個例子:

string str=「123」

int n=convert.toint32(str);

string是引用型別,int為值型別。那麼,此處有沒有發生拆裝箱呢

答案是:沒有

原因:看兩種型別是否發生了裝箱或拆箱,要看這兩種型別是否存在繼承關係。有繼承關係才有可能

發生裝箱和拆箱

3、現在,我們只知道拆裝箱的定義,那麼拆裝箱到底給我們的應用程式帶來了好處還是壞處呢?

我們可以看下面一段**:

class program

sw.stop();

console.writeline(sw.elapsed);

console.readkey();

//listlist = new list();

//stopwatch sw = new stopwatch();

//for (int i = 0; i < 10000000; i++)//}

}

我們知道list集合所裝的型別為object型別,因此在每次新增int型別資料時,都要進行裝箱操作,而list泛型集合型別為int,新增int型別資料時無須進行裝箱操作

通過執行結果我們可以看出list集合進行同樣資料的新增操作是所費時間明顯高於list<>泛型集合。

因此拆裝箱操作會影響(降低)我們應用程式的執行速度,故在開發中應該盡量避免拆裝箱操作!

裝箱和拆箱,自動裝箱和自動拆箱

以integer的建立為例。裝箱 把基本資料型別轉換成包裝類物件 int integer integer num1 new integer 17 拆箱 把乙個包裝類的物件,轉換成基本型別的變數 integer int int num2 num1.intvalue 自動裝箱 integer num3 ...

裝箱和拆箱

在c 中的有兩種型別的變數 值型別和引用型別。當值型別和引用型別相互轉化時,會發生裝箱和拆箱的過程。這裡有一點要宣告 經過拆箱或裝箱的物件會多出它自己乙份拷貝,如圖所示 從圖可以看出它和它的拷貝不在乙個儲存區域。這也是值型別和引用型別的區別所在。值型別總是在棧中,而引用型別總是在託管堆中。目前j2s...

裝箱和拆箱

裝箱 boxing 和拆箱 unboxing 是c 型別系統中重要的概念。它通過允許任何數值型別的資料被轉換為任何形式型別的物件提供了數值型別和引用型別間的緊密聯絡。裝箱和拆箱使得對在其中任何型別都可以最終被看作物件的型別系統的統一的觀察變為可能。裝箱轉換允許任何數值型別可以隱式地轉換為 objec...