is
關鍵字用於檢查物件是否與給定型別相容。注意了,這裡的
is並不是「是
」的意思,而是「相容
」。也就是說,如果被檢查物件能夠強制轉換成給定型別並不發生異常,那麼表示它們型別相容。如果所提供的表示式非空,並且所提供的物件可以強制轉換為所提供的型別而不會導致引發異常,則
is表示式的計算結果將是
true
;否則,發生異常時
is表示式將返回
false。is
的使用方式:
if(obj
ismyobject)
如果已知表示式將始終是
true
或始終是
false
,則is
關鍵字將導致編譯時警告,但是,通常在執行時才計算型別相容性。
注意,is
運算子只考慮引用轉換、裝箱轉換和取消裝箱轉換。不考慮其他轉換,如使用者定義的轉換。特別注意:雖然
int和
double
是型別相容的,但是使用
is運算子的結果卻是
false
,那是因為
is運算子只考慮引用轉換、裝箱轉換和拆箱轉換。在
is 運算子的左側不允許使用匿名方法。
引用轉換
is作用於物件引用時,將判斷被檢查物件變數是否是給定型別的派生型別。如果是派生型別,返回
true
;否則返回
false
。例如:
list
<
int> list =
newlist<
int>();
if(list
isienumerable
) //這裡將返回true。因為list實現了ienumerable介面。
裝箱轉換
inti = 5;
if(i
isint32) //
這裡返回
true。if
(i is
int16) //
這裡返回
false
,因為int
型別的包裝型別是
int32
,而不是
int16
。拆箱轉換
int32 int32 =
newint32();
if(int32
is int
) //
這裡返回
true。if
(int32
is long
) //
這裡返回
false
,因為int32
型別的原始型別是
int,而不是
long
。注意
1.雖然
point
與pointf
、size
與sizef
、rectangle
與rectanglef
可以相互轉換,但是使用
is運算子的結果都是返回
false
,因為is
運算子不支援使用者自定義的型別轉換檢測。
2.int
、long
、double
這些原始型別、數值型別雖然可以進行相互間的強制轉換,但是使用
is運算子的結果都是返回
false
,也是因為
is運算子不支援這種原始型別轉換的檢測。
inti = 6;
long
l = 100;
if(i is
long
) //
返回false
if(i is
double
) //
返回false
if(l is
double
) //
返回false
if(l is
int) //
返回false
c#中as
和is關鍵字一
. as
運算子用於在相容的引用型別之間執行某些型別的轉換。例如:
static
void
main(
string
args)
else
}console.readline();}
結果:not a string
hello
not a string
class
base
}class
derived : base
class
program}}
對於繼承類,允許把子類轉換成父類,但是不可以把父類轉換成子類,不同類之間,值型別不可轉換。
二.is
檢查物件是否與給定型別相容。
例如,下面的**可以確定物件是否為
myobject
型別的乙個例項,或者物件是否為從
myobject
派生的乙個型別:
複製**
if (obj is myobject)
如果所提供的表示式非空,並且所提供的物件可以強制轉換為所提供的型別而不會導致引發異常,則
is表示式的計算結果將是
true
。如果已知表示式將始終是
true
或始終是
false
,則is
關鍵字將導致編譯時警告,但是,通常在執行時才計算型別相容性。
不能過載
is運算子。
請注意,
is運算子只考慮引用轉換、裝箱轉換和取消裝箱轉換。不考慮其他轉換,如使用者定義的轉換。在is
運算子的左側不允許使用匿名方法。
lambda
表示式屬於例外。
class
myquicksort
else
console.readline();}}
class
class1
}class
class2:class1
結果:yes
c 中is和as關鍵字的區別
關於型別的判斷和轉換有is和 as這2個操作符。具體區別和用法如下 is就是處於對型別的判斷。返回 true 和false 如果乙個物件是某個型別或是其父型別的話就返回為 true 否則的話就會返回為 false 另外is 操作符永遠不會丟擲異常。如下 system.boolean b1 o iss...
c 中 is 和 as 關鍵字的區別
is 關鍵字用於檢查物件是否與給定型別相容。注意了,這裡的 is並不是 是 的意思,而是 相容 也就是說,如果被檢查物件能夠強制轉換成給定型別並不發生異常,那麼表示它們型別相容。如果所提供的表示式非空,並且所提供的物件可以強制轉換為所提供的型別而不會導致引發異常,則 is表示式的計算結果將是 tru...
C 中as和is關鍵字
一.as 運算子用於在相容的引用型別之間執行某些型別的轉換。例如 static void main string args else console.readline 結果 not a string hello not a string class base class derived base c...