is (C# 參考)
更新:2007 年 11 月
檢查物件是否與指定的型別相容。例如,下列程式碼可以判斷某個物件是否為 MyObject 型別 (或衍生自 MyObject 的型別) 的執行個體:
if (obj is MyObject)
{
}
如果提供的運算式不可為 Null,且提供的物件可在未造成擲回例外狀況之下,將型別轉換成提供的型別,is 運算式就會評估為 true。
若運算式已知永遠為 true 或永遠為 false,is 關鍵字就會產生編譯時期警告,但通常會在執行階段評估型別相容性。
is 運算子無法多載。
請注意,is 運算子只會考慮參考轉換、boxing 轉換和 unboxing 轉換三種方式。而不會考慮使用其他轉換方式,例如使用者定義轉換。
is 運算子的左邊不允許使用匿名方法 (Anonymous Method)。這個例外狀況包括 Lambda 運算式。
範例
class Class1 {}
class Class2 {}
class Class3 : Class2 { }
class IsTest
{
static void Test(object o)
{
Class1 a;
Class2 b;
if (o is Class1)
{
Console.WriteLine("o is Class1");
a = (Class1)o;
// Do something with "a."
}
else if (o is Class2)
{
Console.WriteLine("o is Class2");
b = (Class2)o;
// Do something with "b."
}
else
{
Console.WriteLine("o is neither Class1 nor Class2.");
}
}
static void Main()
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
Class3 c3 = new Class3();
Test(c1);
Test(c2);
Test(c3);
Test("a string");
}
}
/*
Output:
o is Class1
o is Class2
o is Class2
o is neither Class1 nor Class2.
*/
C# 語言規格
如需詳細資料,請參閱 C# 語言規格中的下列章節:
7.6.6 Cast 運算式
7.9.10 is 運算子