相关疑难解决方法(0)

使用GetHashCode获取Enum int值

我有一个枚举

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()感到困惑.使用它有什么问题吗?

c# enums gethashcode

24
推荐指数
4
解决办法
2万
查看次数

是否可以将私有成员的哈希码组合起来生成新的哈希码?

我有一个对象,我想生成一个唯一的哈希(覆盖GetHashCode()),但我想避免溢出或不可预测的事情.

代码应该是组合一小组字符串的哈希码的结果.

哈希码将是生成缓存密钥的一部分,因此理想情况下它们应该是唯一的,但是被散列的可能值的数量很小所以我认为概率对我有利.

这样的事情是否足够并且有更好的方法吗?

int hash = 0;
foreach(string item in collection){
    hash += (item.GetHashCode() / collection.Count)
}
return hash;
Run Code Online (Sandbox Code Playgroud)

编辑:感谢您的答案到目前为止.@Jon Skeet:不,订单并不重要

我想这几乎是另一个问题,但由于我使用结果生成缓存键(字符串)是否有意义使用像MD5这样的加密哈希函数或只使用此int的字符串表示?

c# hashcode gethashcode

17
推荐指数
2
解决办法
5388
查看次数

标签 统计

c# ×2

gethashcode ×2

enums ×1

hashcode ×1