Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operator
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 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
nullelementu 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()); }Za pomocą wzorców listy można dopasować elementy 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 / Notatka
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 isspecyfikacji języka C# i dopasowywania wzorca.