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