【问题标题】:Full if/else statement vs. Conditional Operator [duplicate]完整的 if/else 语句与条件运算符 [重复]
【发布时间】:2011-04-07 00:57:32
【问题描述】:

可能的重复:
Benefits of using the conditional ?: (ternary) operator
Is the conditional operator slow?

大家好,

关于不同的 if/else 语句,我有一个非常简单的问题。

除了编写更少的代码之外,使用条件运算符与完整的 if/else 语句相比还有其他好处吗?

在使用时是否有性能提升、编译代码减少或其他任何对我有益的方面?

感谢您的帮助

马尔科

【问题讨论】:

  • 感谢您向我展示重复的内容,当我输入答案时它们没有出现,我想我正在寻找所有错误的东西!
  • 条件运算符和 if 语句编译成完全相同的 CIL 代码:条件分支指令。 (模重排列,因为一个是表达式,另一个是语句。)

标签: c# if-statement ternary-operator conditional-operator


【解决方案1】:

不要专注于编写更少的代码...专注于你最终会变得更可读的代码。

有时if 语句将更具可读性。有时条件运算符会更具可读性。在有意义的情况下,我喜欢条件运算符,就计算一个逻辑值的不同方式而言(例如,基于客户年龄的折扣)。不过,我不喜欢以复杂的方式使用它——在有意义的地方使用完整的 if/else 并没有错。

也值得记住 null-coalescing 运算符...所以不要:

string shipTo = customer.ShippingAddress != null 
              ? customer.ShippingAddress : customer.BillingAddress;

你可以使用

string shipTo = customer.ShippingAddress ?? customer.BillingAddress;

同样,它只在某些情况下有用 - 但在那些情况下,它真的很方便。

【讨论】:

  • 谢谢 - 这就是我需要知道的。我一直在阅读一些代码,发现一些开发人员在他们可能不应该使用的地方使用三元运算符使代码过于复杂。 8分钟后接受!
  • @Marko: 学究式的快速说明,运算符的name 是条件运算符。它是一个三元运算符,因为它有三个操作数,但这只是运算符的一个属性,而不是它的描述。
  • 太棒了-谢谢@Jon。我还在等你的书到货,毫无疑问,我读完之后会有更多的问题!谢谢!
【解决方案2】:

除了编写更少的代码之外,使用三元运算符与完整的 if/else 语句相比还有其他好处吗?

更好的可读性,在某些情况下……我想就是这样。

在使用时是否有性能提升、编译代码减少或其他任何对我有利的因素?

不,没什么大不了的。我认为它通常会编译成相同的 IL...

所以最终,您应该只根据可读性做出选择。如果编写完整的 if/else 更易读,那就去做吧。如果它是一个非常简单易读的三元表达式,那就去吧。

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 2023-03-03
    • 1970-01-01
    • 2012-02-08
    • 2022-01-09
    • 2011-06-04
    • 2017-05-10
    • 1970-01-01
    • 2017-11-19
    相关资源
    最近更新 更多