【问题标题】:One-liner if statements, how to convert this if-else-statement单行 if 语句,如何转换此 if-else-statement
【发布时间】:2011-01-07 04:49:27
【问题描述】:

这里是菜鸟,所以要温柔。我到处寻找,似乎无法找到答案。如何压缩以下内容?

if (expression)
{
    return true;
}
else
{
    return false;
}

我无法让它工作,因为它正在返回一些东西而不是设置一些东西。我已经看到过这样的事情:

somevar = (expression) ? value1 : value2;

就像我说的,请温柔:)

【问题讨论】:

    标签: c# if-statement


    【解决方案1】:
    return (expression) ? value1 : value2;
    

    如果 value1value2 实际上是 truefalse 就像你的例子一样,你也可以

    return expression;
    

    【讨论】:

    • 为了澄清,这被称为“三元运算符”
    • 当我尝试使用“return (expression) ? value1 : value2;”时,我实际上是正确的但我把它放在了很远的地方。所以,我收到一个关于“代码无法访问”的错误,因为它永远不会到达那个语句。很高兴我还是问了“返回表达式”;更有意义...谢谢!
    • 其实“三元”就是由三项组成,称为条件运算符。 msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx
    • @Joel:是的。这是 条件运算符。它是一个三元运算符。
    • 当 value1 或 value2 是 Clipboard.SetText(TextBox.Text) 之类的函数时,这会引发异常
    【解决方案2】:

    您需要的只是:

    return expression;
    

    原因是表达式本身的计算结果为布尔值truefalse,因此拥有if 块(甚至是?: 运算符)是多余的。

    【讨论】:

    • 我认为他不明白为什么所以你可能会解释那部分,但是是的,这就是我会做的。
    【解决方案3】:

    如果expression 返回一个布尔值,您可以只返回它的结果。

    例子

     return (a > b)
    

    【讨论】:

      【解决方案4】:

      因为表达式是布尔值:

      return expression;
      

      【讨论】:

        猜你喜欢
        • 2019-04-09
        • 2019-07-04
        • 2019-07-03
        • 1970-01-01
        • 2015-05-16
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多