【发布时间】:2010-12-12 05:06:07
【问题描述】:
考虑到评估时间,下面两个是等价的吗?
if(condition1)
{
//code1
}
else
{
//code2
}
condition1 ? code1 : code2
或者它们只是语法不同?
【问题讨论】:
标签: if-statement operators ternary-operator conditional-operator micro-optimization
考虑到评估时间,下面两个是等价的吗?
if(condition1)
{
//code1
}
else
{
//code2
}
condition1 ? code1 : code2
或者它们只是语法不同?
【问题讨论】:
标签: if-statement operators ternary-operator conditional-operator micro-optimization
不同的是,后者可以根据条件返回一个值。
例如,如果您有以下语句:
if (SomeCondition())
{
text = "Yes";
}
else
{
text = "No";
}
使用三元运算符,您将编写:
text = SomeCondition() ? "Yes" : "No";
注意第一个示例如何根据条件执行语句,而第二个示例根据条件返回值。
【讨论】:
嗯...在前一种情况下,您可以使用任意数量或类型(表达式与语句)的代码来代替 code1 和 code2。在后一种情况下,它们必须是有效的表达式。
【讨论】:
是的,是的。
唯一的好处就是节省代码行数。
【讨论】:
是的,这是两种不同的语法形式,它们的工作方式相同,并且最有可能相同的代码将由编译器生成。
【讨论】: