同桌上课用手指进去了好爽_欧美丰满熟妇xxⅹⅹ性大i_成人av天天日天天拍拍_猛男gay帅男gay男男同志_欧美va天堂在线观看_人妻无码av中文系列三里桃花_亚欧免费无码在线观看_久久久精品国产亚洲av水_日韩在线免费看污污污_2021无码专区人妻系列日韩

首頁(yè) 優(yōu)化推廣 C#中裝箱 開箱什么意思

C#中裝箱 開箱什么意思

來源: | 時(shí)間:2011/4/18 13:49:25 |

C# 中的數(shù)據(jù)類型都是從 System.Object 類中派生出來的,而且利用了"裝箱"和"開箱"的技術(shù)。
"裝箱"和"開箱"的意思很簡(jiǎn)單,請(qǐng)看示例:
int myint = 5;///值類型
object har = myint; //myint 裝箱到 har
在上面代碼的第一行,我們創(chuàng)建了int類型的變量 myint. int 類型是一種數(shù)值類型(因?yàn)樗且环N基本類型).在第二行,編譯器看到變量 myint 被復(fù)制到一個(gè)叫做 har的引用類型變量.這時(shí)編譯器就生成將這個(gè)值裝箱所需的MSIL代碼.
現(xiàn)在,要將 har轉(zhuǎn)換為數(shù)值類型,就可以執(zhí)行一個(gè)顯式轉(zhuǎn)換:
int myint = 5;//值類型
object har = myint;//裝箱
int myint2 = (int) har;//開箱
 

 

裝箱與開箱
難道C#也是兩種不同的數(shù)據(jù)類型嗎?不是。那它是怎么實(shí)現(xiàn)類型兼容的呢?那就是“裝箱”(boxing)來實(shí)現(xiàn)的。最簡(jiǎn)單的理解就是:裝箱就是將數(shù)值類型轉(zhuǎn)換引用類型。相對(duì)應(yīng)的就是引用類型通過“開箱”轉(zhuǎn)換為數(shù)值類型。
這項(xiàng)技術(shù)之所以如此“偉大”,是因?yàn)橐粋€(gè)對(duì)象在它需要是一個(gè)對(duì)象的時(shí)候,它就僅僅是一個(gè)對(duì)象。比如:如果您聲明了一個(gè)System.int32類型的數(shù)值類型變量。您可以把它作為參數(shù)傳遞給任何方法,如果該方法的參數(shù)類型定義為System.Object,系統(tǒng)會(huì)自動(dòng)執(zhí)行裝箱操作,將它轉(zhuǎn)變成一個(gè)Object。對(duì)于程序員來說,它和普通的數(shù)據(jù)類型一樣,但可以當(dāng)作對(duì)象來操作。但事實(shí)上它只是堆棧上的4個(gè)字節(jié)而已。如:
int temp = 58; //數(shù)值類型
System.Object bar = temp; //temp 被執(zhí)行裝箱操作轉(zhuǎn)變成 對(duì)象類型 bar 這是編譯器就生成該值裝箱所需的MSIL代碼。
現(xiàn)在,要把bar轉(zhuǎn)換為數(shù)值類型,就可以執(zhí)行一個(gè)顯示轉(zhuǎn)換。
int temp = 58;
System.Object bar = temp;
int temp2 = (int)bar;
注意:裝箱就是將數(shù)值類型轉(zhuǎn)換成引用類型。
開箱就是將引用類型轉(zhuǎn)換成數(shù)值類型。(需指明被轉(zhuǎn)換的類型,因?yàn)樗梢员晦D(zhuǎn)換成任何類型)

服務(wù)熱線

153 8323 9821

功能和特性

價(jià)格和優(yōu)惠

網(wǎng)站和維護(hù)

推廣和優(yōu)化

微信服務(wù)號(hào)