Подтвердить что ты не робот

Оператор с одной строкой с двумя действиями

Я бы хотел сделать одну строку, если оператор с более чем 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"

Есть ли возможность для этого в одной строке?

4b9b3361

Ответ 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 запросов на нем)