以下编译正常:
if (_logon.LogonToConnector())
{
MessageBox.Show("Logon Success");
}
else
{
MessageBox.Show("Logon Failed");
}
但是对于更简洁的等效项:
_logon.LogonToConnector() ? MessageBox.Show("Logon Success") : MessageBox.Show("Logon Failure");
编译器给出错误:
仅赋值,调用,递增,递减和新对象表达式可以用作UniformTestClient语句
我哪里出错了?
答案 0 :(得分:6)
放入
MessageBox.Show(_logon.LogonToConnector()
? "Logon Success"
: "Logon Failed");
因为三元运算符必须返回一个值。
答案 1 :(得分:2)
三元运算符返回必须基于true / false的值。您不能以这种方式缩短if / else语句。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator
您可以做类似的事情
string message = _logon.LogonToConnector() ? "Logon Success" : "Logon failed";
MessageBox.Show(message);