Причина, по которой вышеприведенный оператор не работает, был предоставлен другими пользователями и фактически не ответил на мой истинный вопрос.
После игры еще немного, я понял, что вы можете использовать этот оператор для выполните вышеуказанный оператор, но это приведет к некорректному коду.
Если бы я должен был изменить указанный выше оператор:
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;
}
Этот код скомпилирует и выполнит так, как он должен , Однако, если эти методы изначально не предназначались для возврата чего-либо и ссылались на другие области кода, теперь вы должны обрабатывать возвращаемый объект каждый раз, чтобы вызвать эти методы.
В противном случае вы можете использовать trernary operator для однострочного метода выбора и даже знать, какой метод он вызвал в следующей строке, используя результат.
int result = a == b ? doThis() : doThat();
if (result == 0)
MessageBox.Show("You called doThis()!");
Теперь этот код абсолютно бессмыслен и может быть легко выполнен с помощью If 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, и в этом случае я бы никогда не использовал это.