Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operator is
sprawdza, czy wynik wyrażenia jest zgodny z danym typem. Aby uzyskać informacje na temat operatora testowania typów, zobacz sekcję is w artykule Type-testing and cast operators (Operatory testowania is
typów i rzutowania). Możesz również użyć is
operatora, aby dopasować wyrażenie do wzorca, jak pokazano w poniższym przykładzie:
static bool IsFirstFridayOfOctober(DateTime date) =>
date is { Month: 10, Day: <=7, DayOfWeek: DayOfWeek.Friday };
W poprzednim przykładzie is
operator pasuje do wyrażenia względem wzorca właściwości z zagnieżdżonym stałymi i relacyjnymi wzorcami.
Operator is
może być przydatny w następujących scenariuszach:
Aby sprawdzić typ wyrażenia w czasie wykonywania, jak pokazano w poniższym przykładzie:
int i = 34; object iBoxed = i; int? jNullable = 42; if (iBoxed is int a && jNullable is int b) { Console.WriteLine(a + b); // output 76 }
W poprzednim przykładzie pokazano użycie wzorca deklaracji.
Aby sprawdzić element
null
, jak pokazano w poniższym przykładzie:if (input is null) { return; }
W przypadku dopasowania wyrażenia do
null
elementu kompilator gwarantuje, że nie jest wywoływany żaden przeciążony==
przez użytkownika ani!=
operator.Możesz użyć wzorca negacji, aby wykonać sprawdzanie bez wartości null, jak pokazano w poniższym przykładzie:
if (result is not null) { Console.WriteLine(result.ToString()); }
Począwszy od języka C# 11, można używać wzorców listy do dopasowywania elementów listy lub tablicy. Poniższy kod sprawdza tablice dla wartości całkowitych w oczekiwanych pozycjach:
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
Uwaga
Aby uzyskać pełną listę wzorców obsługiwanych przez is
operator, zobacz Patterns (Wzorce).
specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz sekcję operator is specyfikacji języka C# i dopasowywania wzorca.