pro*_*mer 145 resharper hash hash-code-uniqueness
像许多人一样,我使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
当然我有一些自己的成员,但我想知道的是为什么397?
Nic*_*son 159
可能是因为397是足够大的素数,导致结果变量溢出并稍微混合散列的位,从而提供更好的散列码分布.没有什么特别的关于397将它与其他相同数量的素数区分开来.
Nic*_*ver 17
Ben是正确的,反映大会你可以看到它只是他们选择使用的素数.