具有三个 Int16 值的 C# GetHashCode

本文关键字:Int16 值的 GetHashCode 三个 | 更新日期: 2023-09-27 18:35:32

我正在将此函数用于 C# 哈希映射中的键,例如类"字典"。

x、y 和 z 是 Int16。

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

我怎样才能将其扩展到使用所有 3 个变量?


请参阅被覆盖的 System.Object.GetHashCode 的最佳算法是什么?,了解具有任意数量、任何类型的变量的更一般情况。

具有三个 Int16 值的 C# GetHashCode

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

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

^ 是异或运算符。

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