【问题标题】:Which one is the best to use, "Conditional Operator (?:)" or "if...else" in .NET?.NET 中最好使用“条件运算符 (?:)”还是“if...else”?
【发布时间】:2011-05-15 13:30:14
【问题描述】:

有很多语句我们可以使用任何一种,条件运算符或if..else

那么在这些陈述中,从性能的角度来看,哪一个是最好的?

【问题讨论】:

标签: c# .net


【解决方案1】:

不用担心性能。使用哪个更清晰易读。

【讨论】:

  • @Jeevan:我并不是要忽视整体性能,我只是不认为 会成为瓶颈。
  • @Jeevan Bhatt,它们将编译为相同的 msil 代码,因此性能相同。即使存在差异,它也会非常小,以至于对于您用 c# 编写的任何程序都无关紧要。
  • @Jeevan:说真的,你担心的是完全错误的事情。我的笔记本电脑里有一个饿死的 8 路……这些问题不再有任何意义。
  • @Mattias:它们不一定编译成相同的代码。看起来 return sourceValue < 0 ? GetDefaultPositiveValue() : sourceValue; 提供与 if (sourceValue >= 0) return sourceValue; return GetDefaultPositiveValue(); 相同的 IL。
  • @jeevan -- 只有在遇到性能问题时才担心性能!
【解决方案2】:
【解决方案3】:

永远不要考虑性能。过早的优化是撒旦的产物,也是地狱与人间万恶之源。

您应该担心性能的唯一情况是您的用户/客户是否抱怨它。然后只修复他们抱怨的功能。

开发的目的是使代码尽可能地可读。与您尝试优化性能的代码相比,这样做可以更轻松地修复错误和性能问题。

至于性能,通常不是诸如if 之类的常规代码会损害性能。它是网络、数据库操作、算法、解析字符串等。

【讨论】:

    【解决方案4】:

    使用“?”用于为空的 null 或其他不可用的变量分配默认值。

    将 if .. else .. 用于其他所有内容。

    【讨论】:

      【解决方案5】:

      “程序是供人类阅读的,只是偶然地供计算机执行” - 唐纳德·高德纳

      所以,总是如果...否则。除非你找到一个地方在哪里?有助于理解您的代码。

      【讨论】:

        猜你喜欢
        • 2019-10-20
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 2022-12-06
        • 2013-01-19
        • 2014-01-29
        相关资源
        最近更新 更多