is, opérateur (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 is de type, consultez la section opérateur is de l’article Opérateurs de test de type et de cast . Vous pouvez également utiliser l’opérateur is pour faire correspondre une expression à un modèle, comme le montre 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 fait correspondre une expression à un modèle de propriété avec des modèles constants imbriqués et relationnels (disponibles dans C# 9.0 et versions ultérieures).

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

  • Pour vérifier le type d’exécution d’une expression, comme le montre 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 le montre l’exemple suivant :

    if (input is null)
    {
        return;
    }
    

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

  • À compter de C# 9.0, vous pouvez utiliser un modèle de négation pour effectuer une vérification non null, comme le montre 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 L’opérateur is de la Specification du langage C# et les propositions de langage C# suivantes :

Voir aussi