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.