Оператор с одной строкой с двумя действиями
Я бы хотел сделать одну строку, если оператор с более чем 1 действием.
Значение по умолчанию:
(if) ? then : else
userType = (user.Type == 0) ? "Admin" : "User";
Но мне не нужно только "else", мне нужно "else if"
как в нескольких строках:
if (user.Type == 0)
userType = "Admin"
else if (user.Type == 1)
userType = "User"
else if (user.Type == 2)
userType = "Employee"
Есть ли возможность для этого в одной строке?
Ответы
Ответ 1
Похоже, вам действительно нужен оператор Dictionary<int, string>
или, возможно, switch
...
Вы можете сделать это с помощью условного оператора:
userType = user.Type == 0 ? "Admin"
: user.Type == 1 ? "User"
: user.Type == 2 ? "Employee"
: "The default you didn't specify";
Пока вы можете поместить это в одну строку, я настоятельно призываю вас не делать этого.
Обычно я делаю это только для разных условий - не только несколько разных возможных значений, которые лучше обрабатываются на карте.
Ответ 2
userType = (user.Type == 0) ? "Admin" : (user.type == 1) ? "User" : "Admin";
должен сделать трюк.
Ответ 3
Вы можете написать это в одной строке, но это не то, что кто-то сможет прочитать. Держите его так, как вы его уже написали, он уже красив сам по себе.
Если у вас слишком много конструкций if/else
, вы можете подумать об использовании разных структур данных, таких как Dictionaries
(для поиска ключей) или Collection
(для запуска условных LINQ
запросов на нем)