在这篇文章中,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告诉我应该只使用只读字段来进行哈希,而我的字段并不是只读的(虽然代码可以正常编译)。那么有什么好的实践方法呢?因为现在我不能将我的字段设置为只读。
我尝试通过Resharper生成这个方法,以下是结果。
public override int GetHashCode()
{
return base.GetHashCode();
}
说实话,这并没有太大的贡献...