1

我将此函数用于 C# 哈希映射中的一个键,例如类“字典”。

x、y 和 z 是 Int16。

public override int GetHashCode()
{
    return (x << 16) | (UInt16)y;
}

我如何将其扩展到使用所有 3 个变量?


请参阅覆盖 System.Object.GetHashCode 的最佳算法是什么?对于任何类型的任何数量的变量的更一般的情况。

4

1 回答 1

1

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

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

^ 是 XOR 运算符。

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

于 2012-05-27T18:50:31.387 回答