使用GetHasCode获取枚举值是否安全,如下面的代码:
myList.SelectedIndex = myEnumValue.GetHashCode()
答案 0 :(得分:1)
没有。结果不能保证唯一或等于该枚举值的整数值。
我认为它目前实现与强制转换为int相同。但这是一个实施细节,可能随时改变。
正确的方法是转换为基础整数类型:
myList.SelectedIndex = (int)myEnumValue;
答案 1 :(得分:1)
一般来说,没有。 GetHashCode返回枚举的基础值,很可能是因为枚举只是封面下的整数。但是,这是一个可能在更高版本的框架中更改的实现细节。
除此之外,请记住,枚举不需要从0开始,并且不需要为每个值增加一个 - 换句话说,有很多方法可能会遇到麻烦代码。
获取枚举值的基础值的正确方法是强制转换它:
int underlyingValue = (int)enumValue;
请记住,对于SelectedIndex使用该值仍然不行,除非您明确知道正在使用的枚举从0开始并递增1。