C# if then else shorthand 无法编译

C# if then else shorthand won't compile

以下编译成功:

if (_logon.LogonToConnector())
{
    MessageBox.Show("Logon Success");
}
else
{
    MessageBox.Show("Logon Failed");
}

但对于更简洁的等价物:

_logon.LogonToConnector() ? MessageBox.Show("Logon Success") : MessageBox.Show("Logon Failure");

编译器报错:

Only assignment, call, increment, decrement, and new object expressions can be used as a statement UniformTestClient

我哪里错了?

MessageBox.Show(_logon.LogonToConnector() 
  ? "Logon Success"
  : "Logon Failed");

因为三元运算符 必须 return 一个值。

三元运算符 returns 基于 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);