我正在使用此函数作为C#的哈希映射中的键,如类“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?。
答案 0 :(得分:1)
对于任何类型的三个变量x,y,z,标准方法如下:
return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();
^是XOR运算符。
您也可以使用XOR运算符将其他变量合并到您的方法中。