Moh*_*tha 24 c# enums gethashcode
我有一个枚举
public enum INFLOW_SEARCH_ON
{
ON_ENTITY_HANDLE = 0,
ON_LABEL = 1,
ON_NODE_HANDLE = 2
} // enum INFLOW_SEARCH_ON
Run Code Online (Sandbox Code Playgroud)
我必须使用这个枚举来在网格列中进行搜索
获取我正在使用的列索引
MyEnumVariable.GetHashCode()
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,或者我应该使用
(short)MyEnumVariable
Run Code Online (Sandbox Code Playgroud)
我对使用GetHashCode()感到困惑.使用它有什么问题吗?
Cod*_*aos 47
使用GetHashCode()不正确.你应该施展int.以你的方式使用它是要求猛禽(或雷蒙德)来吃你.
这GetHashCode()恰好返回枚举的整数值是一个实现细节,并可能在.net的未来版本中更改.
GetHashCode()保证如果两个值equal的哈希码也相等.反过来不保证.
我的经验法则是,如果GetHashCode要返回一个常量值,你的程序应该仍能正常工作(但可能要慢得多),因为常量通常很少GetHashCode地履行合同,但是具有错误的分布属性.