7

ケース パラメーターとして enum と int を使用した switch ケースのパフォーマンスを考慮する場合、どのコード スニペットを使用するのが適切ですか。

A.

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

When compiling, the JIT replaces Enums with Int32 type. This is known as inline replacement and hence there is no performance hit. I would prefer using Enums as they increase readability and can be back-tracked (Find Reference) as well.

于 2012-07-17T06:18:01.570 に答える