.NET中的 類型轉(zhuǎn)換深入理解
CLR最重要的一個特性就是類型安全。CLR在運行時總能知道一個對象的類型。我們也可以通過調(diào)用GetType()方法,來得到對象的準確類型。因為該方法是一個非虛方法,所以我們不可能利用它來篡改一個類型的信息。(Microsoft.NET 框架程序設計<修訂版>p117)
我們定義如下類:
public class Employee
{
string name= string.Empty;
float age = -1;
public override string ToString()
{
return "name = "+name +" and age = "+age;
}
}
通過如下代碼:
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());
通過以上,應該可以明白“CLR在運行時總能知道一個對象的類型?!绷恕?BR>as 操作符提供了對左邊實例到右邊類型的兼容性檢驗,如果兼容,即左邊實例可以轉(zhuǎn)換為右邊類型的對象,則返回此對象的引用,否則返回null。除了as操作符之外,C#中還提供了is 操作符,它也提供了對左邊實例與右邊類型的兼容性檢驗,只不過當檢驗結(jié)果兼容時,它返回的是true,否則返回false,因此,它還需要額外的顯示操作,以完成轉(zhuǎn)換。所以相對比較起來,as操作符效率更高些。此外,兩個操作符運行過程中,都不會拋出異常。但是as操作符要求對轉(zhuǎn)換過的對象增加是否為null引用的判斷,以防止轉(zhuǎn)換不成功時,對空引用操作。
由于as操作符在檢驗結(jié)果不兼容時,會返回null,因此,as操作符不可以把實例與值類型相檢驗,否則編譯不通過。因為值類型不能賦值為null(?除外).
相關(guān)文章
asp.net Web Service 接口大量數(shù)據(jù)傳輸解決方案
就管他叫“使用多線程分段獲取大量數(shù)據(jù)方法”吧。假定我們的需求是,通過Web Service獲取10W條訂單,我的解決方案是 分成10個線程每個線程傳輸1W條訂單分段獲取2010-04-04
.NET Core應用類型(Portable apps & Self-contained apps)
這篇文章主要介紹了.NET Core應用類型,通常類型用來描述一個特定的執(zhí)行模型或者基于此的應用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
asp.net(C#)防sql注入組件的實現(xiàn)代碼
經(jīng)常要寫一些.net的程序,對于數(shù)據(jù)庫的防注入要求要比較高。這時我從網(wǎng)上搜了一些代碼。查看了一下主要是通過HTTPModel來進行對客戶端轉(zhuǎn)過來的數(shù)據(jù)進行處理。2009-12-12
asp.net html控件的File控件實現(xiàn)多文件上傳實例分享
asp.net中html控件的File控件實現(xiàn)多文件上傳簡單實例,開發(fā)工具vs2010使用c#語言,感興趣的朋友可以了解下,必定是多文件上傳值得學習,或許本文所提供的知識點對你有所幫助2013-02-02
asp.net 使用Response.Filter 過濾非法詞匯
一般信息發(fā)布網(wǎng)站,論壇等均具有實現(xiàn)非法詞匯過濾功能,即當用戶錄入非法詞匯時,進行替換,使其無法顯示到頁面上,針對此種功能,通常采用的時,在讀取時,在讀到非法詞匯后,進行替換。2010-03-03
asp.net+ajaxfileupload.js 實現(xiàn)文件異步上傳代碼分享
本文給大家分享一段asp.net基于ajaxfileupload.js實現(xiàn)文件異步上傳的代碼,本人項目中已經(jīng)在使用的代碼,小伙伴們可以直接移植到自己的項目中去。2014-11-11

