【问题标题】:Which has better performance, Enum or Int in a switch case?在 switch 案例中,Enum 或 Int 哪个具有更好的性能?
【发布时间】:2012-07-17 05:33:04
【问题描述】:

在考虑以 enum 和 int 作为 case 参数的 switch case 的性能时,使用哪个代码 sn-p 更好:

答。

switch ((ToolbarButton)BtnId)
{
    case ToolbarButton.SHOWPROPERTYDIALOG:
         OnShowProperties();
         break;
    case ToolbarButton.MOVETOFIRST:
         OnFirstMessage();
         break;
    case ToolbarButton.MOVETOLAST:
         OnLastMessage();
         break;
}

B.

switch (BtnId)
{
     case (int)ToolbarButton.SHOWPROPERTYDIALOG:
          OnShowProperties();
          break;
     case (int)ToolbarButton.MOVETOFIRST:
          OnFirstMessage();
          break;
     case (int)ToolbarButton.MOVETOLAST:
          OnLastMessage();
          break;
}

【问题讨论】:

  • 枚举的默认底层类型无论如何都是int
  • 我通常发现网络或数据库连接是我的应用程序的性能瓶颈,而不是我的 switch 语句的类型。

标签: c# casting enums switch-statement


【解决方案1】:

编译后,Enums Ints

在 MSIL 中没有任何区别。

【讨论】:

    【解决方案2】:

    编译时,JIT 将 Enums 替换为 Int32 类型。这称为内联替换,因此不会影响性能。我更喜欢使用枚举,因为它们增加了可读性并且还可以回溯(查找参考)。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2012-12-01
      • 2012-07-20
      • 2016-12-07
      相关资源
      最近更新 更多