is (Справочник по C#)

Проверяет совместимость объекта с заданным типом. Например, в следующем коде определяется, является ли объект экземпляром типа MyObject или типа, производного от MyObject:

if (obj is MyObject)
{
}

Если предоставленное выражение отлично от NULL и предоставленный объект может быть приведен к предоставленному типу не вызывая исключение, выражение is принимает значение true.

Ключевое слово is вызывает предупреждение во время компиляции, если известно, что выражение всегда будет иметь значение true или false, однако обычно оценивает совместимость типов во время выполнения.

Оператор 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#