C#GetHashCode有三个Int16值?

时间:2012-05-27 18:35:45

标签: c# hash dictionary hashmap gethashcode

我正在使用此函数作为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?

1 个答案:

答案 0 :(得分:1)

对于任何类型的三个变量x,y,z,标准方法如下:

return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();

^是XOR运算符。

您也可以使用XOR运算符将其他变量合并到您的方法中。