Operatore is (Riferimenti per C#)

isL'operatore controlla se il risultato di un'espressione è compatibile con un determinato tipo. Per informazioni sull'operatore di test del tipo, vedere la sezione operator is dell'articolo Operatori di test dei tipi is e cast.

A partire da C# 7.0, è anche possibile usare l'operatore per trovare una corrispondenza tra un'espressione e un criterio, come illustrato is nell'esempio seguente:

static bool IsFirstSummerMonday(DateTime date) => date is { Month: 6, Day: <=7, DayOfWeek: DayOfWeek.Monday };

Nell'esempio precedente l'operatore corrisponde is a un'espressione rispetto a un modello di proprietà con modelli relazionali e costanti annidati.

L'operatore is può essere utile negli scenari seguenti:

  • Per controllare il tipo di run-time di un'espressione, come illustrato nell'esempio seguente:

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

    L'esempio precedente illustra l'uso di un modello di dichiarazione.

  • Per verificare la null presenza di , come illustrato nell'esempio seguente:

    if (input is null)
    {
        return;
    }
    

    Quando si trova una corrispondenza tra un'espressione e , il compilatore garantisce che non sia richiamato alcun operatore o di null == overload != dell'utente.

  • A partire da C# 9.0, è possibile usare un modello di negazione per eseguire un controllo non Null, come illustrato nell'esempio seguente:

    if (result is not null)
    {
        Console.WriteLine(result.ToString());
    }
    

Nota

Per l'elenco completo dei modelli supportati is dall'operatore , vedere Patterns.

Specifiche del linguaggio C#

Per altre informazioni, vedere la sezione Operatore is della specifica del linguaggio C# e le proposte di linguaggio C# seguenti:

Vedi anche