概述C#加框和消框
C#加框和消框
這一章的課程中,有時(shí)對(duì)象的方便性就象值類型一樣好用。
這就是C#加框和消框登上了舞臺(tái)的地方,加框和消框是C#類型系統(tǒng)的核心概念。通過允許一個(gè)值類型轉(zhuǎn)換成類型對(duì)象或從類型對(duì)象轉(zhuǎn)換成值類型,這種機(jī)制形成了值類型和引用類型之間的捆綁連接。任何東西終究是一個(gè)對(duì)象——但是,僅當(dāng)需要它們是對(duì)象時(shí)。
1.加框轉(zhuǎn)換
給一個(gè)值加框指隱式地把任何值類型轉(zhuǎn)換成類型對(duì)象。當(dāng)一個(gè)值類型被加框時(shí),一個(gè)對(duì)象實(shí)例就被分配,且值類型的值被拷貝給新的對(duì)象??匆韵吕樱?/P>
- int nFunny = 2000;
- object oFunny = nFunny;
第二行的賦值暗示調(diào)用一個(gè)加框操作。nFunny整型變量的值被拷貝給oFunny對(duì)象?,F(xiàn)在整型變量和對(duì)象變量都同時(shí)存在于棧中,但對(duì)象的值居留在堆中。那么,它暗示著什么呢?它們的值互相獨(dú)立——在它們之間沒有連接。(oFunny沒有引用nFunny的值。) 以下代碼說明了結(jié)果:
- int nFunny = 2000;
- object oFunny = nFunny;
- oFunny = 2001;
- Console.WriteLine("{0} {1}", nFunny, oFunny);
當(dāng)代碼改變oFunny的值時(shí),nFunny的值并沒有改變。只要你腦袋中有這個(gè)copy動(dòng)作,就能夠使用值類型的對(duì)象功能,發(fā)揮出你的巨大優(yōu)勢(shì)!
2.消框轉(zhuǎn)換
和加框相比,消框是顯式操作——必須告訴編譯器,你想從對(duì)象中抽取出哪一種值類型。當(dāng)執(zhí)行消框操作時(shí),C#檢測(cè)所請(qǐng)求的值類型實(shí)際上存儲(chǔ)在對(duì)象實(shí)例中。經(jīng)過成功的校驗(yàn),該值被消框。
這就是消框如何執(zhí)行:
- int nFunny = 2000;
- object oFunny = nFunny;
- int nNotSoFunny = (int)oFunny;
以上介紹C#加框和消框
【編輯推薦】