主頁 > 知識庫 > .NET中的 類型轉(zhuǎn)換深入理解

.NET中的 類型轉(zhuǎn)換深入理解

熱門標(biāo)簽:服務(wù)器配置 科大訊飛語音識別系統(tǒng) Linux服務(wù)器 團(tuán)購網(wǎng)站 Mysql連接數(shù)設(shè)置 銀行業(yè)務(wù) 電子圍欄 阿里云

CLR最重要的一個特性就是類型安全。CLR在運行時總能知道一個對象的類型。我們也可以通過調(diào)用GetType()方法,來得到對象的準(zhǔn)確類型。因為該方法是一個非虛方法,所以我們不可能利用它來篡改一個類型的信息。(Microsoft.NET 框架程序設(shè)計修訂版>p117)

我們定義如下類

復(fù)制代碼 代碼如下:

 public class Employee  
  {
     string name= string.Empty;
     float age = -1;
     public override string ToString()
     {
         return "name = "+name +" and age = "+age;
     }
 }
 

通過如下代碼:
復(fù)制代碼 代碼如下:

 Employee e = new Employee();
 object oe = e as object;
 if(oe == null)
 {
     Console.WriteLine("oe is null");
 }
 Console.WriteLine("oe's type is : {0}",oe.GetType());
 

通過以上,應(yīng)該可以明白“CLR在運行時總能知道一個對象的類型?!绷?。
as 操作符提供了對左邊實例到右邊類型的兼容性檢驗,如果兼容,即左邊實例可以轉(zhuǎn)換為右邊類型的對象,則返回此對象的引用,否則返回null。除了as操作符之外,C#中還提供了is 操作符,它也提供了對左邊實例與右邊類型的兼容性檢驗,只不過當(dāng)檢驗結(jié)果兼容時,它返回的是true,否則返回false,因此,它還需要額外的顯示操作,以完成轉(zhuǎn)換。所以相對比較起來,as操作符效率更高些。此外,兩個操作符運行過程中,都不會拋出異常。但是as操作符要求對轉(zhuǎn)換過的對象增加是否為null引用的判斷,以防止轉(zhuǎn)換不成功時,對空引用操作。

由于as操作符在檢驗結(jié)果不兼容時,會返回null,因此,as操作符不可以把實例與值類型相檢驗,否則編譯不通過。因為值類型不能賦值為null(?除外).

標(biāo)簽:大理 廣元 江蘇 衡水 萍鄉(xiāng) 蚌埠 衢州 棗莊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《.NET中的 類型轉(zhuǎn)換深入理解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266