is和as操作符

2021-07-15 19:11:09 字數 856 閱讀 7053

在c#中經常使用的一種判斷型別的操作符 is 和型別轉化的操作符 as ,

is檢查物件是否相容於指定型別,返回bool型別,如果相容返回true,反之返回false

as把已有的例項轉化為指定的型別,如果不相容則返回null,反之轉換成功

下面用控制台應用程式做乙個測試

test1 t1 = new test1();

test2 t2 = new test2();

bool bt1 = t1 is testbase;

bool bt2 = t2 is testbase;

console.writeline(bt1);//true  

console.writeline(bt2);//false 

testbase tb=t1;

//轉換方式1

if(tb is test1)

//轉換方式2

t1 = tb as test1;

if(null!=t1)

else

通過以上**,我們可以知道,test1繼承 testbase,從面相物件的角度看,test1就是乙個(is)testbase,子類的例項可以用父類的例項來接收,

所以返回bt1的值為true,test2與testbase沒有任何關係,所以bt2的值為false。

當要把tb轉化為他的之類test1時,我們用了2種轉換方式,第一種情況下:is首先判斷是否能轉換,通過強制轉換,在此其實判斷了2次相容性所以

用as轉換效率要高

前置操作符和後置操作符

操作符可以被過載 全域性函式和成員函式均可以進行過載 過載前置 操作符不需要額外的引數 過載後置 操作符需要乙個int型別的佔位引數 來看乙個例子 include include using namespace std class test intvalue test operator test o...

關係操作符和邏輯操作符

關係操作符和邏輯操作符使用算術或指標型別的運算元,並返回bool 型別的值。操作符功能用法 logical not 邏輯非 expr less than 小於 expr expr less than or equal 小於等於 expr expr greater than 大於 expr expr ...

MySQL的and操作符和or操作符

有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...