В 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 г.