【问题标题】:if/else vs ternary operatorif/else vs 三元运算符
【发布时间】:2010-12-12 05:06:07
【问题描述】:

考虑到评估时间,下面两个是等价的吗?

if(condition1)
{
    //code1
}
else
{
    //code2
}

condition1 ? code1 : code2

或者它们只是语法不同?

【问题讨论】:

    标签: if-statement operators ternary-operator conditional-operator micro-optimization


    【解决方案1】:

    不同的是,后者可以根据条件返回一个值

    例如,如果您有以下语句:

    if (SomeCondition())
    {
        text = "Yes";
    }
    else
    {
        text = "No";
    }
    

    使用三元运算符,您将编写:

    text = SomeCondition() ? "Yes" : "No";
    

    注意第一个示例如何根据条件执行语句,而第二个示例根据条件返回值

    【讨论】:

      【解决方案2】:

      嗯...在前一种情况下,您可以使用任意数量或类型(表达式与语句)的代码来代替 code1code2。在后一种情况下,它们必须是有效的表达式。

      【讨论】:

        【解决方案3】:

        是的,是的。

        唯一的好处就是节省代码行数。

        【讨论】:

        • 不是唯一一个。第二个变体可用于根据条件将引用绑定到两个不同的对象,第一个不能用于此。
        【解决方案4】:

        是的,这是两种不同的语法形式,它们的工作方式相同,并且最有可能相同的代码将由编译器生成。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-03
          • 1970-01-01
          • 1970-01-01
          • 2018-02-22
          • 2015-06-05
          • 1970-01-01
          • 2022-12-06
          • 2017-03-25
          相关资源
          最近更新 更多