黑馬程式設計師 C 中is和as的區別

2021-06-22 06:07:17 字數 1073 閱讀 5132

關於型別的判斷和轉換有is和as這2個操作符。具體區別和用法如下

is僅判斷,返回true和false。如果乙個物件能轉成某個型別的話就返回為true,否則的話返回false。

is轉換規則:   

1. 檢查物件型別的相容性,並返回結果true(false);

2.不會丟擲異常;  

3.如果物件為null,則返回false;   示例:  c#** 

object o = "abc";    

if (o is string) //執行第一次型別相容性檢查

else
如果物件引用為null,因為沒有物件可以檢查其型別,就像下面**一樣

if(o is employee) 在上面**中,其實clr對物件型別檢查了兩次:is操作首先檢查o所引用的物件是否和employee型別相容。如果相容,那麼在if語句內clr在執行轉換時又會檢查o是否為乙個employee引用。這種程式設計正規化十分常見,c#便提供了一種新的型別檢查,轉換方式。即as操作符,先判斷再轉換,它可以在簡化**的同時,提高效能。**如下:

employee e = o as employee;

if(e != null)

這種as操作即便等同於上面**,同時只進行了1次的型別檢查,所以提高了效能。如果型別相同就返回乙個非空的引用,否則就返回乙個空引用。

as轉換規則:   

1.檢查物件型別的相容性,並返回轉換結果,如果不相容則返回null;

2.不會丟擲異常;  

3.如果結果判斷為空,則強制執行型別轉換將丟擲nullreferenceexception異常;示例:c#**

object o = "abc";    

string s = o as string; //執行第一次型別相容性檢查,並返回結果

if (s != null)
else   

注:as比is少執行一次相容性檢查,效能可能會高一點點。      as是引用型別型別的轉換或者裝箱轉換,不能用與值型別的轉換。

黑馬程式設計師 C 基礎中「 」與「 」的區別

c 基礎中 與 的區別 相信一開始學習c 語言的同學都跟我有一樣的困惑,那就是分不清 與 區別,以至於經常犯錯。今天我就寫篇部落格總結一下他們之間的區別,讓廣大初學者不再迷惑。1 是賦值運算子 中的一種,賦值語句的作用是把 右邊的某個常量或變數或表示式的值賦值給 左邊的另乙個變數。因為賦值運算的順序...

黑馬程式設計師 throw和throws的區別

1.作用不同 throw用於程式設計師自行產生並丟擲異常,throws用於宣告在該方法內丟擲了異常。2.使用的位置不同 throw位於方法體內部,可以作為單獨語句使用。throws必須跟在方法引數列表的後面,不能單獨使用。3.內容不同 throw丟擲乙個異常物件,而且只能是乙個。throws後面跟異...

黑馬程式設計師 import和class的區別

1.import會包含這個類的所有資訊,包括實體變數和方法,而 class只是告訴編譯器,其後面宣告的名稱是類的名稱,至於這些類是如何定義的,暫時不用考慮,後面會再告訴你。2.在標頭檔案中,一般只需要知道被引用的類的名稱就可以了。不需要知道其內部的實體變數和方法,所以在標頭檔案中一般使用 class...