Играя с новыми концепциями, я наткнулся на Ternary Operator
и его красоту. Поиграв с ним некоторое время, я решил проверить его пределы.
Однако мое веселье быстро закончилось, когда я не смог скомпилировать определенную строку кода.
int a = 5;
int b = 10;
a == b ? doThis() : doThat()
private void doThis()
{
MessageBox.Show("Did this");
}
private void doThat()
{
MessageBox.Show("Did that");
}
Эта строка дает мне две ошибки:
Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a statement
Error 2 Type of conditional expression cannot be determined because there is no implicit conversion between 'void' and 'void'
Я никогда не использовал Ternary Operator
, чтобы решить, какой метод вызывать, и я не знаю, возможно ли это вообще. Мне просто нравится идея однострочного If Else Statement
для вызова метода.
Я провел небольшое исследование и не могу найти примеров того, как кто-то делал это, поэтому я думаю, что, возможно, надеялся на что-то невозможное.
Если это возможно, пожалуйста, просветите меня в моих неправильных действиях, а если это невозможно, есть ли другой способ?
If Else
, просто напишите его как одну строку:if (condition) doThis(); else doThat();
Конечно, тернарный оператор (если бы он работал так, как вы думали) был бы короче, но краткость не всегда хороша. - person Jim Mischel   schedule 30.03.2011