像你们许多人,我使用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区别于其他的素数相同的数量级。

其他提示

Ben是正确的,反映会你可以看到这只是一个素数,他们已经选择使用。

散列,resharper使用的看起来像一个变种 FNV 散列。FNV经常实施的不同质数.有一个讨论选择适当的素数,用于FNV 在这里,.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top