我看到了这个哈希函数 - 它触发了一些警报:
public override int GetHashCode()
{
var result = 0;
unchecked {
result = anIntId.GetHashCode();
result *= 397 * (aString != null ? aString.GetHashCode() : 0);
}
return result;
}
我的自动化hash-code-smell-fixer-subroutine想要将其重写为:
public override int GetHashCode()
{
var result = 0;
unchecked {
result = anIntId.GetHashCode() * 397;
result = (result * 397) ^ (aString != null ? aString.GetHashCode() : 0);
}
return result;
}
我无法记住我在哪里学习这种模式,但似乎其中一些实际上没有意义:
这看起来是否正确,还是我犯了一些错误?