7

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

一种。

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;
}
4

2 回答 2

26

编译后,Enums ARE Ints

MSIL 没有任何区别。

于 2012-07-17T05:34:04.487 回答
3

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

于 2012-07-17T06:18:01.570 回答