if/else与三元运算符比较

5
考虑到评估时间,以下两者是否等价?
if(condition1)
{
    //code1
}
else
{
    //code2
}

condition1 ? code1 : code2

这是一个条件运算符,如果condition1成立,则执行code1,否则执行code2。

还是它们只是在语法上有所不同?

它们只是在语法上有所不同。
4个回答

11

两者的区别在于后者可以根据条件返回一个值。

例如,如果有以下语句:

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

使用三目运算符,你将编写:

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

注意第一个例子是根据条件执行语句,而第二个例子是根据条件返回值。


Note how the first example executes a statement based on a condition, while the second one returns a value based on a condition.

4

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


3

是的,没错。

唯一的优点就是节省代码行数。


8
不是唯一的。第二个变体可以根据条件将引用绑定到两个不同的对象,而第一个变体不能用于此。 - sharptooth

1

是的,这两种不同的语法形式将会完全相同地工作,并且编译器很可能会生成相同的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接