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

Паттерн свойства

Запись str is { Length: 5 } проверяет свойство Length у строки. Внутри скобок перечисляют имена членов и вложенные шаблоны; можно комбинировать с логическими и var-шаблонами, например { Length: > 0 and var n }. Применяют с is и в switch.

Синтаксис

значение is { ИмяСвойства: шаблон } значение is тип { Имя: шаблон, Имя2: шаблон }

Пример

Давайте проверить длину строки "abcde":

using System; class Program { static void Main() { string str = "abcde"; bool res = str is { Length: 5 }; Console.WriteLine(res); } }

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

True

Пример

Давайте сузить тип и проверить поле в одном шаблоне:

using System; class Program { static void Main() { object obj = "12345"; if (obj is string { Length: 5 }) { Console.WriteLine("len 5"); } } }

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

"len 5"

Пример

Давайте сохранить длину через вложенный шаблон var n:

using System; class Program { static void Main() { string str = "abcde"; if (str is { Length: > 0 and var n }) { Console.WriteLine(n); } } }

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

5

Пример

Давайте выбрать ветку в switch по свойству записи:

using System; record Pair(int A, int B); class Program { static void Main() { Pair p = new Pair(1, 2); switch (p) { case { A: 1, B: 2 }: Console.WriteLine("match"); break; default: Console.WriteLine("other"); break; } } }

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

"match"

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

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