Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Оператор
Оператор is проверяет, совместим ли результат выражения с заданным типом. Сведения о операторе type-testing is см. в разделе "Операторы " статьи " Тип-тестирование и приведение операторов ". Оператор также можно использовать is для сопоставления выражения с шаблоном, как показано в следующем примере:
static bool IsFirstFridayOfOctober(DateTime date) =>
date is { Month: 10, Day: <=7, DayOfWeek: DayOfWeek.Friday };
В предыдущем примере is оператор сопоставляет выражение с шаблоном свойств с вложенными константами и реляционными шаблонами.
Оператор is может быть полезен в следующих сценариях:
Чтобы проверить тип выражения во время выполнения, как показано в следующем примере:
int i = 34; object iBoxed = i; int? jNullable = 42; if (iBoxed is int a && jNullable is int b) { Console.WriteLine(a + b); // output 76 }В предыдущем примере показано использование шаблона объявления.
Чтобы проверить наличие
null, как показано в следующем примере:if (input is null) { return; }При сопоставлении выражения с
nullкомпилятором гарантируется, что не вызывается перегруженный==пользователем оператор или!=оператор.Шаблон отрицания можно использовать для выполнения проверки, отличной от NULL, как показано в следующем примере:
if (result is not null) { Console.WriteLine(result.ToString()); }Вы можете использовать шаблоны списков для сопоставления элементов списка или массива. Следующий код проверяет массивы для целых значений в ожидаемых позициях:
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
Замечание
Полный список шаблонов, поддерживаемых оператором is , см. в разделе "Шаблоны".
Спецификация языка C#
Дополнительные сведения см. в разделе "Оператор"спецификации языка C# и сопоставления шаблонов.