if / else vs三元运算符

时间:2009-11-02 08:14:06

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

考虑到评估时间,以下是两个相当的?

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

condition1 ? code1 : code2

或者它们只是语法不同?

4 个答案:

答案 0 :(得分:11)

不同之处在于后一站可用于根据条件返回值

例如,如果您有以下声明:

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

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:3)

是&是。

只有利润才能保存代码行。

答案 3 :(得分:1)

是的,这些是两种不同的语法形式,它们的工作方式相同,编译器会发出相同的代码。