as 運(yùn)算符類似于類型轉(zhuǎn)換,所不同的是,當(dāng)轉(zhuǎn)換失敗時,as運(yùn)算符將產(chǎn)生空,而不是引發(fā)異常。在形式上,這種形式的表達(dá)式:
expression_r as type
as運(yùn)算符只執(zhí)行引用轉(zhuǎn)換和裝箱轉(zhuǎn)換。
as運(yùn)算符無法執(zhí)行其他轉(zhuǎn)換,如用戶定義的轉(zhuǎn)換,這類轉(zhuǎn)換應(yīng)使用case表達(dá)式來代替其執(zhí)行。
關(guān)于is的其實(shí)也差不多,只是IS不會幫你進(jìn)行任何的轉(zhuǎn)換。所以需要自已進(jìn)行顯示轉(zhuǎn)換。
is操作符進(jìn)行轉(zhuǎn)換,它自動檢查時局是否和類型兼容,并返回結(jié)果。而且它不會拋出異常。如果對象引用為null,則is總返回false。
is例子:
if (cls1 is Class2)
Class2 cls2 = (Class2)cls1;
else
System.Console.WriteLine("Error 2!");
as例子:
Class2
cls2 = cls1 as Class2;
if (cls2!=null)
System.Console.WriteLine("Ok");
else
System.Console.WriteLine("Error!");
補(bǔ)充:對比兩種方式,is需要做兩次對象的類型檢查,而as需要做一次對象類型檢查,再加一次null的檢查,而null檢查開銷比對象類型檢查少。相對as的方法效率高些。
文章名稱:c#強(qiáng)制轉(zhuǎn)換之a(chǎn)sis用法解析
本文來源:http://m.jiaotiyi.com/article/jgdcjo.html