在这篇文章中,Jon Skeet 提到他通常使用这种算法来覆盖GetHashCode()。
public override int GetHashCode()
{
unchecked // Overflow is fine, just wrap
{
int hash = 17;
// Suitable nullity checks etc, of course :)
hash = hash * 23 + Id.GetHashCode();
return hash;
}
}
现在,我已经尝试过使用它,但是 Resharper 告诉我方法GetHashCode()应该只使用只读字段进行散列(尽管它编译得很好)。什么是一个好的做法,因为现在我真的不能让我的字段是只读的?
我尝试通过 Resharper 生成此方法,结果如下。
public override int GetHashCode()
{
return base.GetHashCode();
}
老实说,这并没有多大贡献...