HashCode作为枚举值

时间:2011-06-15 20:44:44

标签: c# .net

  

可能重复:
  Using GetHashCode for getting Enum int value

使用GetHasCode获取枚举值是否安全,如下面的代码:

myList.SelectedIndex = myEnumValue.GetHashCode()

2 个答案:

答案 0 :(得分:1)

没有。结果不能保证唯一或等于该枚举值的整数值。

我认为它目前实现与强制转换为int相同。但这是一个实施细节,可能随时改变。

正确的方法是转换为基础整数类型:

myList.SelectedIndex = (int)myEnumValue;

答案 1 :(得分:1)

一般来说,没有。 GetHashCode返回枚举的基础值,很可能是因为枚举只是封面下的整数。但是,这是一个可能在更高版本的框架中更改的实现细节。

除此之外,请记住,枚举不需要从0开始,并且不需要为每个值增加一个 - 换句话说,有很多方法可能会遇到麻烦代码。

获取枚举值的基础值的正确方法是强制转换它:

int underlyingValue = (int)enumValue; 

请记住,对于SelectedIndex使用该值仍然不行,除非您明确知道正在使用的枚举从0开始并递增1。