c 裝箱與拆箱

2021-09-11 18:38:26 字數 322 閱讀 4013

裝箱:將值型別(如 int ,或自定義的值型別等)轉換成 object 或者介面型別的乙個過程。當 clr 對值型別進行裝箱時,會將該值包裝為 system.object 型別,再將包裝後的物件儲存在堆上。 拆箱就是從物件中提取對應的值型別的乙個過程。

裝箱是隱式的;拆箱必定是顯式的。 

與簡單的賦值操作相比,裝箱和拆箱都需要進行大量的資料計算。對值型別進行裝箱時,clr 必須重新分配乙個新的物件。拆箱所需的強制轉換也需要進行大量的計算,兩者相比,僅僅是程度不高,並且也可能會出現型別轉換發生的異常情形。如果你的操作正處於迴圈的中心,通過測試(如:stopwatch),你會很明顯的感覺到效能問題。

C 裝箱與拆箱

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

C 裝箱與拆箱

裝箱是將 值型別轉換為 引用型別 拆箱是將 引用型別 轉換為值型別 利用裝箱和拆箱功能,可通過允許 值型別的任何值與 object 型別 的值相互轉換,將值型別與引用型別鏈結起來 例如 int val 100 object obj val console.writeline 物件的值 obj 這是乙...

C 裝箱與拆箱

在前面提到了值型別和引用型別。這裡就來和大家一起了解一下,他們互相轉換的過程裝箱 boxing 拆箱 unboxing 由於c 中所有的資料型別都是由基類system.object繼承而來的,所以值型別和引用型別的值可以通過顯式 或隱式 操作相互轉換,而這轉換過程也就是裝箱 boxing 和拆箱 u...