GetHashCode实现的问题

小鸟向前飞 2014-07-13 11:38:52
之前写了个class
实现了这个class的GetHashCode函数
class如下:


public class RegistryObj
{
public string Key
{
get;
set;
}
public string Value
{
get;
set;
}
}


这个类只有两个成员
GetHashCode实现如下:


public int GetHashCode(RegistryObj obj)
{
int hashProductName = obj.Key == null ? 0 : obj.Key.GetHashCode();
int hashProductCode = obj.Value.GetHashCode();
return hashProductName ^ hashProductCode;
}


现在由于某些原因 这个类要增加成员如下


public class RegistryObj
{
public string KeyName{ get; set; }
public string ValueName { get; set; }
public RegistryValueKind ValueType { get; set; }
public string Value { get; set; }
public OptionEnum EnumOptionType { get; set; }
}


我想问的是GetHashCode中也要取到这个类的每个成员 然后返回他们相互^的结果吗?
RegistryValueKind 和枚举类型有GetHashCode方法吗?
...全文
85 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-07-13
  • 打赏
  • 举报
回复
和你说下HashCode的原则:
(1)两个对象相等,必然HashCode相等,否则是错误的!
(2)两个对象不相等,HashCode可以相等,也可以不等,但是我们的原则是尽可能让它们不等。
(3)基于以上原则,如果你改变了GetHashCode,你应该同时重载Equals。
小鸟向前飞 2014-07-13
  • 打赏
  • 举报
回复
RegistryValueKind 和枚举类型有GetHashCode - -|

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧