代码之家  ›  专栏  ›  技术社区  ›  Rob Bowman

C#否则速记将无法编译[复制]

  •  0
  • Rob Bowman  · 技术社区  · 8 年前

    以下编译正常:

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

    但对于更简洁的等价物:

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

    编译器给出错误:

    只有赋值、调用、增量、减量和新对象表达式才能用作语句uniformtestclient

    我哪里做错了?

    2 回复  |  直到 8 年前
        1
  •  6
  •   Dmitrii Bychenko    8 年前

    把它

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

    自三元运算符 必须返回 价值观。

        2
  •  2
  •   Bukk94    8 年前

    三元运算符返回一个基于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);
    
    推荐文章