C 中as 和 is 的區別

2021-09-29 18:47:01 字數 925 閱讀 8223

1.as在轉換的同時兼判斷相容性,如果無法進行轉換,則 as 返回 null(沒有產生新的物件)而不是引發異常。有了as就不要再用try-catch來做型別轉換的判斷了。因此as轉換成功要判斷是否為null。

2.as是引用型別型別的轉換或者裝箱轉換,不能用與值型別的轉換。如果是值型別只能結合is來強制轉換。

3.is只是做型別相容判斷,並不執行真正的型別轉換。返回true或false,不會返回null,物件為null也會返回false。

4.as模式的效率要比is模式的高,因為借助is進行型別轉換,需要執行兩次型別相容檢查。而as只需要做一次型別相容,一次null檢查,null檢查要比型別相容檢查快。

is關鍵字是判斷型別,用於檢查物件是否與給定型別相容,不成功則不會丟擲異常,如果相容則返回true如果不相容則返回false。在進行型別轉換之前用

if (p_obj is system.string)

else

messagebox.show("與型別不相容", "提示!");

在上面的例子中進行兩次相容性檢查,一在判斷時p_obj is system.string,另一次在轉換(string)p_obj時。用as只需要 一次。

as關鍵字是轉換,可以將物件轉換為指定型別,與is不同,轉換成功將會返回轉換後的物件,不成功則不會丟擲異常而是返回null 。

string objstr = p_obj as string;

if (objstr != null)

messagebox.show("與型別相容", "提示!");

else

messagebox.show("與型別不相容", "提示!");

C 中if和 if區別

c 中的 define預處理指令不能定義替換常數。該指令現在只能定義用於條件編譯的符號,為 if elif else及 endif所用。原始檔在進行編譯之前要進行一次檔案處理,這是由預處理器完成的。這種檔案處理只對原始檔進行文字處理而不進行任何編譯動作。所有預處理指令都以 符號開頭。預處理識別以下指...

C 中if和 if區別

if的作用是程式流控制,會直接編譯 執行。if是對編譯器的指令,其作用是告訴編譯器,有些語句行希望在條件滿足時才編譯。if使您可以開始條件指令,測試乙個或多個符號以檢視它們是否計算為true。如果它們的計算結果確實為true,則編譯器將計算位於 if與最近的 endif 指令之間的所有 例如,複製 ...

C 中的 和 的區別

比如c 中乙個類 class student 裡面有個公有 成員變數 test 如果你宣告這個類的物件student s 那麼你要對test操作要用 s.test 如果你宣告這個類的物件student s為指標型別的話,那麼你要對test操作要用 s test 或者 如果乙個指標型變數指向乙個類 結...