Проверки диапазонов в C# легко превращаются в цепочки сравнений с && и ||. Паттерны позволяют записать их компактнее.
С C# 9 условия можно комбинировать прямо внутри pattern matching:
string Grade(int score) => score switch
{
< 0 or > 100 => "некорректно",
>= 90 => "отлично",
>= 60 and < 90 => "нормально",
_ => "плохо",
};
not особенно удобен для проверок:
if (value is not null)
Process(value);
if (obj is not string)
return;
Паттерны можно комбинировать и с проверкой свойств:
bool IsAdultAdmin(User u) =>
u is { Age: >= 18, Role: "admin" };
Вместо нескольких if получаем одно выражение, где условие читается почти как обычная фраза.
#sharp_view


