Share via


is (Referência de C#)

Verifica se um objeto é compatível com um determinado tipo. Por exemplo, o código a seguir pode determinar se um objeto é uma instância da MyObject tipo ou um tipo que deriva de MyObject:

if (obj is MyObject)
{
}

Um is expressão for avaliada como true se a expressão fornecida não for nulo, e o objeto fornecido pode ser convertido para o tipo fornecido sem causar uma exceção seja lançada.

O is palavra-chave faz com que um aviso de tempo de compilação se a expressão é conhecida por ser sempre true ou ser sempre false, mas normalmente avalia a compatibilidade do tipo em tempo de execução.

O is operador não pode ser sobrecarregado.

Observe que o is operador considera somente conversões de referência, conversões boxing e unboxing conversões. Outras conversões, como conversões definidas pelo usuário, não são considerados.

Métodos anônimos não são permitidos no lado esquerdo da is operador. Essa exceção inclui expressões lambda.

Exemplo

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.
*/

Especificação da linguagem C#

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

Palavras-chave C#

typeof (Referência de C#)

as (Referência de C#)

Palavras-chave de operador (Referência de C#)

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#