1、as
用于在兼容的引用類型之間執(zhí)行轉(zhuǎn)換,as 運算符類似于強制轉(zhuǎn)換操作;但是,如果轉(zhuǎn)換不可行,as 會返回 null 而不是引發(fā)異常。更嚴格地說,這種形式的表達式:expression as type,等效于expression is type ? (type)expression : (type)null,只是 expression 只被計算一次。注意,as 運算符只執(zhí)行引用轉(zhuǎn)換和裝箱轉(zhuǎn)換。as 運算符無法執(zhí)行其他轉(zhuǎn)換,如用戶定義的轉(zhuǎn)換,這類轉(zhuǎn)換應(yīng)使用 cast 表達式來執(zhí)行 as操作符不會做過的轉(zhuǎn)換操作,當需要轉(zhuǎn)化對象的類型屬于轉(zhuǎn)換目標類型或者轉(zhuǎn)換目標類型的派生類型時,那么此轉(zhuǎn)換操作才能成功。
效率:
當用as操作符進行類型轉(zhuǎn)換的時候,首先判斷當前對象的類型, 當類型滿足要求后才進行轉(zhuǎn)換,而傳統(tǒng)的類型轉(zhuǎn)換方式,是用當前對象直接去轉(zhuǎn)換, 而且為了保護轉(zhuǎn)換成功,要加上try-catch. 而且并不產(chǎn)生新的對象【當不成功的時候,會返回null】。 相對來說,as效率高點,用as進行類型轉(zhuǎn)換是安全的。 實例: e.Item.DataItem as DataRowView 同等 (DataRowView)e.Item.DataItem
2、is
檢查對象是否與給定類型兼容,例如:if(obj is string){}。如果所提供的表達式非空,并且所提供的對象可以強制轉(zhuǎn)換為所提供的類型而不會導(dǎo)致引發(fā)異常,則 is 表達式的計算結(jié)果將是 true。如果已知表達式將始終是 true 或始終是 false,則 is 關(guān)鍵字將導(dǎo)致編譯時警告,但是,通常在運行時才計算類型兼容性。不能重載 is 運算符。請注意,is 運算符只考慮引用轉(zhuǎn)換、裝箱轉(zhuǎn)換和取消裝箱轉(zhuǎn)換。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com