本節主要介紹類型轉換方面知識!安全
一、任何類型均可以安全地轉換爲其基類類型,能夠由隱式轉換來完成;spa
二、任何類型轉換爲其派生類型時,必須進行顯式轉換;code
三、值類型和引用類型的轉換機制稱爲裝箱(boxing)和拆箱(unboxing);對象
Ⅰ、IS模式blog
a.檢查對象類型的兼容性,並返回結果:true或者false;
b.不會拋出異常;
c.若是對象爲null,則返回值永遠爲false。
ex:
string a = "hello world!"; if (a is XX) { XX b = (XX)a; }
Ⅱ、AS模式string
a.檢查對象類型的兼容性,並返回結果,若是不兼容就返回null;
b.不會拋出異常;
c.若是結果判斷爲空,則強制執行類型轉換將拋出NullReferenceExcep異常;
d.as必須和引用類型一塊兒使用。
ex:
object o = new object(); XX b = (XX)o; // 若是類型轉換不成功,會拋出異常
對於上面的as操做,等效於下面的is操做:
XX b = o is XX ? (XX)o: null ;
實現的語法更加簡明,且不會引起異常,在類型轉換時值得推薦。
綜上所述,as模式較is模式執行效率上更勝一籌,可是一般來講,is用於進行類型判斷,as用於類型轉型。class