Compartilhar via


O is operador (referência de C#)

O is operador verifica se o resultado de uma expressão é compatível com um determinado tipo. Para obter informações sobre o operador de teste is de tipo, consulte a seção operador is do artigo Operadores de conversão e teste de tipo. Você também pode usar o is operador para corresponder uma expressão a um padrão, como mostra o exemplo a seguir:

static bool IsFirstFridayOfOctober(DateTime date) =>
    date is { Month: 10, Day: <=7, DayOfWeek: DayOfWeek.Friday };

No exemplo anterior, o is operador corresponde a uma expressão com um padrão de propriedade com padrões de constante aninhados e relacionais .

A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.

A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.

Dica

Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.

O is operador pode ser útil nos seguintes cenários:

  • Para verificar o tipo de tempo de execução de uma expressão, como mostra o exemplo a seguir:

    int i = 34;
    object iBoxed = i;
    int? jNullable = 42;
    if (iBoxed is int a && jNullable is int b)
    {
        Console.WriteLine(a + b);  // output 76
    }
    

    O exemplo anterior mostra o uso de um padrão de declaração.

  • Para verificar null, como mostra o exemplo a seguir:

    if (input is null)
    {
        return;
    }
    

    Quando você corresponde a uma expressão, nullo compilador garante que nenhum operador ou == usuário != sobrecarregado seja invocado.

  • Para fazer uma verificação não nula usando um padrão de negação, como mostra o exemplo a seguir:

    if (result is not null)
    {
        Console.WriteLine(result.ToString());
    }
    
  • Para corresponder elementos de uma lista ou matriz usando padrões de lista. O código a seguir verifica matrizes em busca de valores inteiros em posições esperadas:

    int[] empty = [];
    int[] one = [1];
    int[] odd = [1, 3, 5];
    int[] even = [2, 4, 6];
    int[] fib = [1, 1, 2, 3, 5];
    
    Console.WriteLine(odd is [1, _, 2, ..]);   // false
    Console.WriteLine(fib is [1, _, 2, ..]);   // true
    Console.WriteLine(fib is [_, 1, 2, 3, ..]);     // true
    Console.WriteLine(fib is [.., 1, 2, 3, _ ]);     // true
    Console.WriteLine(even is [2, _, 6]);     // true
    Console.WriteLine(even is [2, .., 6]);    // true
    Console.WriteLine(odd is [.., 3, 5]); // true
    Console.WriteLine(even is [.., 3, 5]); // false
    Console.WriteLine(fib is [.., 3, 5]); // true
    

Observação

Para obter a lista completa de padrões compatíveis com o is operador, consulte Padrões.

Especificação da linguagem C#

Para obter mais informações, consulte a seção Operador is da especificação da linguagem C# e correspondência de padrões.

Consulte também