if/else vs 三元运算符
Posted
技术标签:
【中文标题】if/else vs 三元运算符【英文标题】:if/else vs ternary operator 【发布时间】:2010-12-12 05:06:07 【问题描述】:考虑到评估时间,下面两个是等价的吗?
if(condition1)
//code1
else
//code2
condition1 ? code1 : code2
或者它们只是语法不同?
【问题讨论】:
【参考方案1】:不同的是,后者可以根据条件返回一个值。
例如,如果您有以下语句:
if (SomeCondition())
text = "Yes";
else
text = "No";
使用三元运算符,您将编写:
text = SomeCondition() ? "Yes" : "No";
注意第一个示例如何根据条件执行语句,而第二个示例根据条件返回值。
【讨论】:
【参考方案2】:嗯...在前一种情况下,您可以使用任意数量或类型(表达式与语句)的代码来代替 code1
和 code2
。在后一种情况下,它们必须是有效的表达式。
【讨论】:
【参考方案3】:是的,是的。
唯一的好处就是节省代码行数。
【讨论】:
不是唯一一个。第二个变体可用于根据条件将引用绑定到两个不同的对象,第一个不能用于此。【参考方案4】:是的,这是两种不同的语法形式,它们的工作方式相同,并且最有可能相同的代码将由编译器生成。
【讨论】:
以上是关于if/else vs 三元运算符的主要内容,如果未能解决你的问题,请参考以下文章