如果一个枚举类型存储在聚合类型中,可能希望将其包含在类型的哈希码中(假设使用典型的“multiply by primes”哈希函数)。如果只调用
SomeEnum.GetHashCode()
,似乎JIT会对实例进行装箱,即使在发布版本中也是如此。
对此进行分析显示,我的应用程序的大约10%的时间花费在各种GetHashCode
函数中装箱枚举。
几种值类型实现了IEquatable
或类似接口,这允许调用GetHashCode
作为静态方法;从而避免了装箱。但是System.Enum
不提供GetHashCode
的静态重载。是否有一些计算应该使用的代码但又避免装箱的方法?
enum E : long { V1 = 1, V2 = 0x100000001L }
。 - phoogint
范围内均匀分布。但现在我的性能数据表明并非如此。 - Billy ONeal