5

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

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

condition1 ? code1 : code2

或者它们只是在语法上不同?

4

4 回答 4

11

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

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

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

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

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

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

于 2009-11-02T08:26:16.083 回答
4

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

于 2009-11-02T08:16:11.300 回答
3

是的是的。

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

于 2009-11-02T08:15:27.337 回答
1

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

于 2009-11-02T08:16:49.977 回答