is (C# 參考)

檢查物件是否與指定的型別相容。 例如,下列程式碼可以判斷某個物件是否為 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# 語言規格。 語言規格是 C# 語法和用法的決定性來源。

請參閱

參考

C# 關鍵字

typeof (C# 參考)

as (C# 參考)

運算子關鍵字 (C# 參考)

概念

C# 程式設計手冊

其他資源

C# 參考