Opérateur « is » (référence C#)

L’opérateur is vérifie si le résultat d’une expression est compatible avec un type donné. Pour plus d’informations sur l’opérateur de test de type is, consultez la section Opérateur « is » de l’article Opérateurs de test et de cast de type. Vous pouvez également utiliser l’opérateur is pour faire correspondre une expression à un modèle, comme l’illustre l’exemple suivant :

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

Dans l’exemple précédent, l’opérateur is correspond à une expression par rapport à un modèle de propriété avec des modèles constants et relationnels imbriqués.

L’opérateur is peut être utile dans les scénarios suivants :

  • Pour vérifier le type d’exécution d’une expression, comme l’illustre l’exemple suivant :

    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’exemple précédent montre l’utilisation d’un modèle de déclaration.

  • Pour rechercher null, comme l’illustre l’exemple suivant :

    if (input is null)
    {
        return;
    }
    

    Lorsque vous faites correspondre une expression par rapport à null, le compilateur garantit qu’aucun opérateur surchargé par l’utilisateur == ou != n’est appelé.

  • Vous pouvez utiliser un modèle de négation pour effectuer une vérification non null, comme l’illustre l’exemple suivant :

    if (result is not null)
    {
        Console.WriteLine(result.ToString());
    }
    
  • À compter de C# 11, vous pouvez utiliser des modèles de liste pour faire correspondre des éléments d’une liste ou d’un tableau. Le code suivant vérifie les tableaux pour les valeurs entières dans les positions attendues :

    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
    

Notes

Pour obtenir la liste complète des modèles pris en charge par l’opérateur is , consultez Modèles.

spécification du langage C#

Pour plus d’informations, consultez la section The is operator de la Spécification du langage C# et des Critères spéciaux.

Voir aussi