我有一个枚举
public enum INFLOW_SEARCH_ON
{
ON_ENTITY_HANDLE = 0,
ON_LABEL = 1,
ON_NODE_HANDLE = 2
} // enum INFLOW_SEARCH_ON
我必须使用此枚举在网格列中进行搜索。
获取我正在使用的列索引
MyEnumVariable.GetHashCode()
哪个工作正常,或者我应该使用
(short)MyEnumVariable
我对使用 GetHashCode()
有点困惑。使用有什么问题吗?
最佳答案
使用 GetHashCode()
是不正确的。您应该转换为 int
。以你的方式使用它是要求猛禽(或雷蒙德)来吃你。
GetHashCode()
恰好返回枚举的整数值是一个实现细节,可能会在未来的 .net 版本中发生变化。
GetHashCode()
保证如果两个值相等
,它们的哈希码也相等。反之亦然。
我的经验法则是,如果 GetHashCode
返回一个常量值,您的程序应该仍能正常工作(但可能会慢很多 ),因为一个常量 GetHashCode
简单地履行了契约(Contract),但分布属性不佳。
关于c# - 使用 GetHashCode 获取 Enum int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4584627/