C# GetHashCode 具有三个 Int16 值?

标签 c# hash dictionary hashmap gethashcode

我将此函数用于 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/

相关文章:

c++ - 映射中结构的构造函数中的访问键

c# - 在 C# 中,键为 Type 类型的字典是否比键为 ulong 类型的字典慢?

dictionary - dict 从嵌套字典中获取 dict,在 tcl 中创建一个副本?

c# - 摩托罗拉条码扫描器 SDK 事件 C#

c# - 带句点的 ASP.NET MVC 路由 ID

c# - 如何在C#中发送具有多个地址的电子邮件

c# - 使用 FormattedText 对象,我如何找出我的文本实际显示了多少?

perl - 如何使哈希键查找不区分大小写?

image - 如何知道图像是否与另一个图像相似(角度略有不同但视角相同)

c# - Windows 应用商店应用程序中的哈希和盐字符串