Condividi tramite


is Operatore (riferimenti per C#)

L'operatore is verifica se il risultato di un'espressione è compatibile con un determinato tipo. Per informazioni sull'operatore type-testing is , vedere la sezione relativa all'operatore is dell'articolo Operatori cast e test dei tipi . È anche possibile usare l'operatore is per trovare una corrispondenza tra un'espressione e un criterio, come illustrato nell'esempio seguente:

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

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

Il riferimento al linguaggio C# documenta la versione rilasciata più di recente del linguaggio C#. Contiene anche la documentazione iniziale per le funzionalità nelle versioni di anteprima pubblica per la prossima versione del linguaggio di programmazione.

La documentazione identifica tutte le funzionalità introdotte nelle ultime tre versioni della lingua o nelle anteprime pubbliche correnti.

Suggerimento

Per trovare quando una funzionalità è stata introdotta per la prima volta in C#, vedere l'articolo sulla cronologia delle versioni del linguaggio C#.

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

  • Per controllare il tipo di runtime 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
    }
    

    Nell'esempio precedente viene illustrato l'uso di un modello di dichiarazione.

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

    if (input is null)
    {
        return;
    }
    

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

  • Per eseguire un controllo non Null usando un modello di negazione, come illustrato nell'esempio seguente:

    if (result is not null)
    {
        Console.WriteLine(result.ToString());
    }
    
  • Per trovare una corrispondenza con gli elementi di un elenco o di una matrice utilizzando i modelli di elenco. Il codice seguente controlla le matrici per i valori integer nelle posizioni previste:

    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
    

Annotazioni

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

Specificazione del linguaggio C#

Per altre informazioni, vedere La sezione relativa all'operatore is della specifica del linguaggio C# e criteri di ricerca corrispondenti.

Vedere anche