is (C# リファレンス)

オブジェクトと、指定した型との間に互換性があるかどうかをチェックします。たとえば、次のコードでは、オブジェクトが MyObject 型のインスタンスか、または MyObject から派生した型か判定できます。

if (obj is MyObject)
{
}

is 式は、指定した式が null 以外であり、指定したオブジェクトを指定した型に例外がスローされることなくキャストできる場合に、true と評価されます。

式が常に true または false であることがわかっている場合に is キーワードを使用すると、コンパイル時に警告が出力されますが、通常は、実行時の型の互換性が評価されます。

is 演算子はオーバーロードできません。

is 演算子では、参照変換、ボックス化変換、またはボックス化解除変換だけが考慮されます。ユーザー定義変換など、他の変換は考慮されません。

匿名メソッドは、is 演算子の左辺では使用できません。ラムダ式はその例外です。

使用例

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# リファレンス