Рассмотрим класс комнаты и перечисление статуса члена клуба такого вида:
1 | public class Room |
Метод GetRooms
возвращает список комнат вида:
1 | public static List<Room> GetRooms() |
Начиная с C# 8.0 появилась возможность сопоставлять с образцом в выражении switch
, используя несколько значений свойств объекта класса:
1 | const int RoomNotAvailable = -1; |
Код ветки _ => Membership.Bronze
аналогичен случаю default:
в стандартном switch
.
Тогда основной метод программы может использовать вышеприведённый код таким образом:
1 | static voir Main() |
Основная магия сопоставления с образцом с использованием значений свойств объектов происходит в методе AssignRoom
. Раньше можно было делать switch
только на основе единственного значения, но начиная с С# 8.0 паттерн матчинг можно делать на основе значений нескольких свойств экзмепляров классов. Такой подход намного более читабельный и улучшает ясность кода.