Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
77 of 1492 menu
◀ ▶

Позиционный паттерн

Шаблон в круглых скобках сравнивает части значения по позиции: pair is (1, 2) для кортежа или записи с Deconstruct. Отдельные позиции можно заменить _ или вложенным шаблоном. Работает с is и switch.

Синтаксис

значение is (шаблон1, шаблон2) case (шаблон1, шаблон2):

Пример

Давайте проверить кортеж (1, 2) позиционным шаблоном:

using System; class Program { static void Main() { (int a, int b) pair = (1, 2); bool res = pair is (1, 2); Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте связать имена с элементами при совпадении:

using System; class Program { static void Main() { (int a, int b) pair = (3, 4); if (pair is (var x, var y)) { Console.WriteLine($"{x} {y}"); } } }

Результат выполнения кода:

3 4

Пример

Давайте сопоставить запись Point по координатам:

using System; record Point(int X, int Y); class Program { static void Main() { Point p = new Point(1, 2); if (p is (1, 2)) { Console.WriteLine("on pair"); } } }

Результат выполнения кода:

"on pair"

Пример

Давайте отбросить второй элемент шаблоном (1, _):

using System; class Program { static void Main() { (int a, int b) pair = (1, 5); bool res = pair is (1, _); Console.WriteLine(res); } }

Результат выполнения кода:

True

Смотрите также

  • деконструкция на части,
    которая раскладывает значение на переменные
  • паттерн свойства,
    который сопоставляет по именам полей
  • паттерн отбрасывания,
    который пропускает позиции в скобках
  • паттерн списка,
    который сопоставляет элементы по порядку
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить