在資料型別轉換中,c#相對其它語言來說是比較嚴格的,要求顯式進行資料轉化。
為了操作方便,c#也提供了一種is操作符進行轉換,十分方便,它自動檢查時局是否和型別相容,並返回結果。而且它不會丟擲異常。如果物件引用為null,則is總返回false。
if (cls1 is class2)
else
system.console.writeline("error 2!");
平時自己也多用這種方式來做型別轉化的,但今天看了個文章,對比了另外一種方式,as操作符進行轉換,才知道as比is可以稍微地提高效能的。
class2 cls2 = cls1 as class2;
if (cls2!=null)
system.console.writeline("ok");
else
system.console.writeline("error!");
as稍微不同,它檢查引用物件是否相容,如果不相容則返回null,因此需要做null的判斷。
對比兩種方式,is需要做兩次物件的型別檢查,而as需要做一次物件型別檢查,再加一次null的檢查,而null檢查開銷比物件型別檢查少。相對as的方法效率高些。
c as is 型別轉換
在資料型別轉換中,c 相對其它語言來說是比較嚴格的,要求顯式進行資料轉化。為了操作方便,c 也提供了一種is操作符進行轉換,十分方便,它自動檢查時局是否和型別相容,並返回結果。而且它不會丟擲異常。如果物件引用為null,則is總返回false。if cls1 isclass2 else system...
c as is 型別轉換
在資料型別轉換中,c 相對其它語言來說是比較嚴格的,要求顯式進行資料轉化。為了操作方便,c 也提供了一種is操作符進行轉換,十分方便,它自動檢查時局是否和型別相容,並返回結果。而且它不會丟擲異常。如果物件引用為null,則is總返回false。if cls1 isclass2 else system...
c as is 型別轉換
在資料型別轉換中,c 相對其它語言來說是比較嚴格的,要求顯式進行資料轉化。為了操作方便,c 也提供了一種is操作符進行轉換,十分方便,它自動檢查時局是否和型別相容,並返回結果。而且它不會丟擲異常。如果物件引用為null,則is總返回false。if cls1 isclass2 class2 cls2...