Паттерн списка
Шаблон в квадратных скобках проверяет
элементы по порядку: 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-выражение,
где часто сопоставляют списки