В C# 7 введено сопоставление шаблонов с расширением оператора switch и оператором is, предлагающим шаблон const, шаблон типа и >шаблон var. В C# 8 планируется расширение сопоставления шаблонов, включая шаблон свойств, рекурсивный шаблон и новый переключатель — переключить выражение.
В C# 7 сопоставление с образцом было введено в C#. В следующем примере используется сопоставление с образцом в инструкции switch
и сопоставление с образцом типа. В первом случае предложение when
также используется для фильтрации только фигур, размер которых имеет минимальную высоту. Второй и третий случаи соответствуют фигурам с меньшей высотой, но только объектам типа Ellipse и Rectangle. Для всех остальных фигур выбран регистр по умолчанию:
статическая строка M1 (форма формы) {
переключатель (форма) {
case Shape s при s.Size.height › 100:
вернуть $”большая фигура размером {s.Size} в позиции {s.Position}”; случай Эллипс e:
вернуть $”Эллипс размером {e.Size} в позиции {e.Position}”;
случай Прямоугольник r:
вернуть $”Прямоугольник размером {r.Size} в позиции {r.Position}”;
дефолт:
вернуть «другую форму»;
}
}
Использование выражения переключения
В C# 7 расширены сценарии, в которых можно использовать элементы с телом выражения. Однако, как только вы используете оператор switch
, метод не может быть реализован с использованием синтаксиса выражения. Это меняется с новым выражением переключения.
Выражение переключения упрощено по сравнению с оператором переключения. Во-первых, порядок ключевого слова switch и используемой переменной меняется на противоположный. Вместо переключатель (форма) вы пишете переключатель формы. Ключевое слово case
не требуется с новым синтаксисом. Каждый случай определяется шаблоном, например. шаблон типа Ellipse e, где в данном случае заполнена переменная e
. Вы также можете использовать фильтр when
, который использовался в более раннем примере сопоставления шаблонов C# 7. Этот синтаксис такой же, как и раньше. Ключевое слово break
также не нужно. Реализация case следует за лямбда-оператором. После запятой следующий шаблон определяет следующий регистр. Новый шаблон отбрасывания с _
определяет регистр по умолчанию. Этот новый шаблон также можно использовать с командой switch, использовавшейся ранее в случае default
.
Что делать, если в одном случае требуется несколько операторов? В таком случае вы можете использоватьлокальные функции.
статическая строка M2 (Shape shape) =› переключатель формы
{
Фигура s, когда s.Size.height › 100 =› $”большая фигура размером {s.Size} в позиции {s.Position}”,
Эллипс e =› $”Эллипс размером {e.Size} в позиции {e.Position}”,
Прямоугольник r =› $"Прямоугольник размером {r.Size} в позиции {r.Position}",
_ =› «другая форма»
};
В C# 7 введено сопоставление с шаблоном с помощью шаблона типа, шаблона const и шаблона var. C# 8 расширяет сопоставление шаблонов с помощью шаблона отбрасывания, шаблона свойства и рекурсивного шаблона. Шаблоны, которые могут упростить код, написанный сегодня.
Новое выражение переключения предлагает более современный способ для переключения/регистра/разрыва, тогда как ключевые слова case и break больше не нужны.
Спасибо, что заглянули!!! Не стесняйтесь комментировать этот пост или написать мне по электронной почте [email protected]
Первоначально опубликовано на сайте ravindranaik.com 18 августа 2018 г.