为什么是'397'用于ReSharper GetHashCode复盖?
-
01-07-2019 - |
题
像你们许多人,我使用ReSharper加速发展进程。当你用它来替代的平等成员一类,代码代它产生于GetHashCode()看起来像:
public override int GetHashCode()
{
unchecked
{
int result = (Key != null ? Key.GetHashCode() : 0);
result = (result * 397) ^ (EditableProperty != null ? EditableProperty.GetHashCode() : 0);
result = (result * 397) ^ ObjectId;
return result;
}
}
我当然有一些我自己的成员在那里,但我想知道的是为什么397?
- 编辑:所以我的问题将是更好的措辞,是否有一些"特殊"关于397总理的数量之外的一个总理的号码?
解决方案
可能是因为397是一个主要的足够的大小,导致结果的变量溢流和混合的位的散列有点,提供一个更好的分布哈码。没有什么特别的特别约为397区别于其他的素数相同的数量级。
不隶属于 StackOverflow