Login
C# - pattern matching - many discards
22611 просмотров
Перейти к просмотру всей ветки
in Antwort Murr 24.02.24 02:40, Zuletzt geändert 24.02.24 12:38 (alex445)
И енто обычно одно и только одно.
-------
хи-хи... Я его об этом уже спрашивал...
Решение, кстати, есть.Но! оно - медленное...
Я вроде отвечал - иногда охото сравнить разнотиповые значения, а вернуть - одого типа. Скажем, проверить одну переменную double на пачку диапазонов, и вторую строковую переменную - на пару значений. А вернуть что-то из enum, например. Или вот тут что непонятного - делаю проверку всего объекта на налл, затем свойства этого объекта - ещё как-то, и кейс для всех остальных вариантов? И делаю это не пачкой if-else, а в несколько компактных строчек. Усложнил свой первоначальный пример - сколько это расписывать деревом if-else?
var (result, message) = (row, flag) switch { (null, _) => (MyEnum.NotAllowed, null), (_, Flags.CantDie) when row.Age > 100 => (MyEnum.Immortal, LocalizedStrings.Immortal), (_, _) when row.Age > 100 => (MyEnum.Died, LocalizedStrings.Died), (_, _) => (MyEnum.StillAlive, LocalizedStrings.Alive), };