C#的裝箱和拆箱



       談到裝箱拆箱,大概的意思就是值類型和引用類型的相互裝換——值類型到引用類型叫裝箱,反之就叫拆箱。

1.類型的理解
       既然是類型之間的相互轉換,那首先就要說清楚類型。我們都知道Sysyem.Object類型是所有內建類型的基類。那么如何區分值類型和引用類型呢?最簡單的一個區分標准就是所有的值類型都繼承自System.Value,也就是說所有繼承自System.ValueType的類型都是值類型,而其他類型都是引用類型。
簡單的說:
     (1)值類型:整型:Int;長整型:long;浮點型:float;字符型:char;布爾型:bool;枚舉:enum;結構:struct;它們統一繼承 自System.ValueType。
   (2)引用類型:數組,用戶定義的類、接口、委托,object,字符串等。

2.裝箱和拆箱的深入理解

                                                                                Object obj = 1;
       這行語句將整型常量1賦給object類型的變量obj;我們知道常量1是值類型,值類型是要放在棧上的,而object是引用類型,它需要放在堆上;要把值類型放在堆上就需要執行一次裝箱操作。

要在運行時成功拆箱值類型,被拆箱的項必須是對一個對象的引用,該對象是先前通過裝箱該值類型的實例創建的。 

下面舉一個例子:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM