5

間に速度の違いはありますか

if (myInt == CONST_STATE1)

if (myEnum == myENUM.State1)

C#で?

4

3 に答える 3

11

C# では、とにかくコンパイラによって Enum が定数になるようにインライン化されるため、コードの読みやすさが向上します。

于 2009-01-02T12:47:05.090 に答える
2

列挙型を使用する際に注意すべきことは、リフレクションを必要とする操作を使用しない (または注意して使用する) ことです。例えば:

  1. myEnumValue.ToString()。
  2. Enum.Parse()
  3. Enum.IsDefined()
  4. Enum.GetName()
  5. Enum.GetNames()

定数の場合、リフレクションを必要とする操作を実行するオプションは存在しません。ただし、列挙型の場合はそうです。したがって、これには注意する必要があります。

列挙型の検証/リフレクションに関連する操作が CPU 時間の最大 5% を占めているというプロファイル レポートを見てきました (API メソッドへのすべての呼び出しで列挙型の検証が行われるシナリオ)。これは、使用されている列挙型のリフレクションの結果をキャッシュするクラスを作成することで大幅に削減できます。

そうは言っても、設計の観点から何が理にかなっているかに基づいて、列挙型と定数のどちらを使用するかを決定することをお勧めします。これは、チームがリフレクションを含む操作のパフォーマンスへの影響を認識していることを確認するためです。

于 2009-01-03T11:04:47.777 に答える
1

また、これについて心配する必要があるかどうかはわかりません。時期尚早の最適化のように聞こえます。どのシステムでも、列挙型の比較よりも大きなボトルネックがあると確信しています。:)

于 2009-01-03T10:42:03.407 に答える