我将此函数用于 C# HashMap 中的键,例如类“Dictionary”。
x、y 和 z 为 Int16。
public override int GetHashCode()
{
return (x << 16) | (UInt16)y;
}
如何将其扩展到使用所有 3 个变量?
参见What is the best algorithm for an overridden System.Object.GetHashCode?对于具有任意数量、任意类型的变量的更一般情况。
最佳答案
对于任意类型的三个变量x,y,z,标准方法如下:
return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();
^ 是异或运算符。
您还可以使用 XOR 运算符将其他变量合并到您的方法中。
关于C# GetHashCode 具有三个 Int16 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776313/