Причина, по которой вышеприведенное утверждение не работает, была предоставлена другими пользователями и фактически не ответила на мой настоящий вопрос.
Поиграв еще немного, я понял, что вы МОЖЕТЕ использовать этот оператор для выполненияприведенное выше утверждение, но оно приводит к некоторому плохому коду.
Если бы я изменил приведенное выше выражение на;
int a = 5;
int b = 10;
int result = a == b ? doThis() : doThat();
private int doThis()
{
MessageBox.Show("Did this");
return 0;
}
private int doThat()
{
MessageBox.Show("Did that");
return 1;
}
Этот код будет компилироваться и выполняться так, как должен.Однако, если эти методы изначально не предназначались для возврата чего-либо и ссылались на другие области в коде, теперь вам придется каждый раз обрабатывать возвращаемый объект для вызова этих методов.
В противном случае вы теперь можете использовать троичнуюоператор для однострочного метода выбора и даже знать, какой метод он вызвал в следующей строке, используя результат.
int result = a == b ? doThis() : doThat();
if (result == 0)
MessageBox.Show("You called doThis()!");
Теперь этот код абсолютно бессмыслен и может быть легко выполнен If Else, ноЯ просто хотел знать, можно ли это сделать, и что нужно было сделать, чтобы заставить его работать.
Теперь, когда я знаю, что вы можете эффективно возвращать любой тип в этих методах, это может стать немного болееполезно.Это может считаться «Плохой практикой кодирования», но может стать очень полезным в ситуациях, для которых никогда не было СООТВЕТСТВУЮЩЕГО.
Вы можете получить доступ к тому или иному объекту на основе любого условия, и это может быть очень полезно в одномстрока кода.
UserPrivileges result = user.Group == Group.Admin ? GiveAdminPrivileges() : GiveUserPrivileges();
private UserPrivileges GiveAdminPrivileges()
{
//Enter code here
return var;
}
private UserPrivileges GiveUserPrivileges()
{
//Enter code here
return var;
}
Конечно, это можно сделать с помощью оператора If, но я думаю, что использование тернарного оператора для других целей делает программирование увлекательным.Теперь это может быть не так эффективно, как утверждение If Else, в этом случае я бы никогда не использовал это.