集約型内に列挙型が格納されている場合は、その列挙型を型のハッシュコード内に含めることができます(一般的な「素数による乗算」ハッシュ関数を想定)。を呼び出すだけでSomeEnum.GetHashCode()
、リリースビルドであっても、JITがインスタンスをボックス化するように見えます。
これをプロファイリングすると、アプリケーションがさまざまな関数内で列挙をボクシングに費やした時間の約10%がわかりGetHashCode
ます。
いくつかの値型は、静的メソッドとしてIEquatable
呼び出すことを可能にする、または同様のインターフェースを実装します。GetHashCode
ボクシングを回避します。ただしSystem.Enum
、の静的オーバーロードは提供されませんGetHashCode
。使用する必要があるがボクシングを回避するコードを計算する方法はありますか?