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在運行時總能知道一個對象的類型。”了。 as 操作符提供了對左邊實例到右邊類型的兼容性檢驗,如果兼容,即左邊實例可以轉換為右邊類型的對象,則返回此對象的引用,否則返回null。除了as操作符之外,C#中還提供了is 操作符,它也提供了對左邊實例與右邊類型的兼容性檢驗,只不過當檢驗結果兼容時,它返回的是true,否則返回false,因此,它還需要額外的顯示操作,以完成轉換。所以相對比較起來,as操作符效率更高些。此外,兩個操作符運行過程中,都不會拋出異常。但是as操作符要求對轉換過的對象增加是否為null引用的判斷,以防止轉換不成功時,對空引用操作。