C#的is和as規則——讀《你必須知道的.net》
is
檢查對象類型的兼容性,並返回結果,true或者false;
不會拋出異常;
如果對象為null,則返回值永遠為 false。
object o = new object();
class A
{
}
if (o is A) //執行第一次類型兼容檢查
{
A a = (A) o; //執行第二次類型兼容檢
}
as
檢查對象類型的兼容性,並返回結果,如果不兼容就返回 null;
不會拋出異常;
如果結果判斷為空,則強製執行類型轉換將拋出NullReferenceException 異常。
object o = new object();
class B
{
}
B b = o as B; //執行一次類型兼容檢查
if(b!=null)
{
MessageBox.Show("b is B's instance.");
}
縱上比較,is/as 操作符,提供了更加靈活的類型轉型方式,但是as 操作符在執行效率上更勝一籌,
我們在實際的編程中應該體會其異同,酌情量才。
最後更新:2017-04-02 22:16:00