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

Паттерн списка

Шаблон в квадратных скобках проверяет элементы по порядку: nums is [1, 2, ..] или [_, _, 3, ..]. Срез .. в одном шаблоне может быть только один; он покрывает оставшиеся элементы. Подходит для массивов и коллекций; удобно с выражением коллекции и is.

Синтаксис

коллекция is [шаблон1, шаблон2, ..] коллекция is [_, _, шаблон, ..]

Пример

Давайте проверить начало массива 1 2 и хвост через ..:

using System; class Program { static void Main() { int[] nums = [1, 2, 3, 4, 5]; bool res = nums is [1, 2, ..]; Console.WriteLine(res); } }

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

True

Пример

Давайте пропустить первые позиции через _ и проверить 3:

using System; class Program { static void Main() { int[] nums = [1, 2, 3, 4, 5]; bool res = nums is [_, _, 3, ..]; Console.WriteLine(res); } }

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

True

Пример

Давайте получить false, если первый элемент не совпал:

using System; class Program { static void Main() { int[] nums = [2, 2, 3, 4, 5]; bool res = nums is [1, 2, ..]; Console.WriteLine(res); } }

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

False

Пример

Давайте выбрать сообщение в switch по шаблону списка:

using System; class Program { static void Main() { int[] nums = [1, 2, 3, 4, 5]; string msg = nums switch { [1, 2, ..] => "starts 1 2", [_, _, 3, ..] => "third is 3", _ => "other" }; Console.WriteLine(msg); } }

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

"starts 1 2"

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

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