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











結(jié)果輸出:
值類型的值為 456
引用類型的值為 123
裝箱操作如下圖所示
取消裝箱
取消裝箱就是從引用類型到值類型的顯式轉(zhuǎn)換。取消裝箱操作先檢查對(duì)象實(shí)例,確保它是給定值類型的一個(gè)裝箱值,然后將該值從實(shí)例復(fù)制到值類型變量中。
例如:

















結(jié)果輸出:
指定的轉(zhuǎn)換無(wú)效。錯(cuò)誤:不正確的取消裝箱。
要將int j = (short) o 改為int j = (int) o 就會(huì)顯示取消裝箱成功。
取消裝箱如圖所示:
在網(wǎng)上查資料的時(shí)候在CSDN上看到個(gè)解釋裝箱和拆箱的解釋,如下所示:







能把強(qiáng)制類型轉(zhuǎn)換解釋成裝箱拆箱實(shí)在覺得很有趣,就做個(gè)反面的例子吧。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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