C#中的數據類型包括值類型、引用類型和指針類型,而指針類型只有在不安全代碼中使用。值類型包括簡單類型、結構和枚舉,引用類型包括類、接口、委托、數組和字符串等。為了保證效率,值類型是在棧中分配內存,在聲明時初始化才能使用,不能為NULL,而引用類型在堆中分配內存,初始化時默認為NULL。值類型超出作用范圍系統自動釋放內存,而引用類型是通過垃圾回收機制進行回收。由于C#中所有的數據類型都是由基類System.Object繼承而來的,所以值類型和引用類型的值可以相互轉換,而這轉換過程也就是所謂的裝箱和拆箱。
裝箱轉換
裝箱就是將一個值型變量隱式地轉換為引用類型對象,雖然也可以顯示轉換,但一般都不需要使用到。對值類型進行裝箱會在堆中分配一個對象實例,并將該值復制到新的對象中。
例如:











結果輸出:
值類型的值為 456
引用類型的值為 123
裝箱操作如下圖所示
取消裝箱
取消裝箱就是從引用類型到值類型的顯式轉換。取消裝箱操作先檢查對象實例,確保它是給定值類型的一個裝箱值,然后將該值從實例復制到值類型變量中。
例如:

















結果輸出:
指定的轉換無效。錯誤:不正確的取消裝箱。
要將int j = (short) o 改為int j = (int) o 就會顯示取消裝箱成功。
取消裝箱如圖所示:
在網上查資料的時候在CSDN上看到個解釋裝箱和拆箱的解釋,如下所示:







能把強制類型轉換解釋成裝箱拆箱實在覺得很有趣,就做個反面的例子吧。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
