C#使用三个Int16值的GetHashCode?

C#使用三个Int16值的GetHashCode?,c#,hash,dictionary,hashmap,gethashcode,C#,Hash,Dictionary,Hashmap,Gethashcode,我将此函数用于C#的哈希映射类“Dictionary”中的一个键 x、 y和z是Int16 public override int GetHashCode() { return (x << 16) | (UInt16)y; } public override int GetHashCode() { 返回(x对于任何类型的三个变量x、y、z,标准方法如下: return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();

我将此函数用于C#的哈希映射类“Dictionary”中的一个键

x、 y和z是Int16

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

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

return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();
^是XOR运算符


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

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

return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();
^是XOR运算符


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

标准?[引用要求]我将其称为“标准”,因为在关于该方法的说明中明确提到了它。请注意,[1,2,3]、[2,1,3]、[3,2,1]在这里都有相同的哈希值。因此[x,x,y]、[x,y,x]、[y,x]对于x的任何值。Donald Knuth没有查看MSDN示例片段:)标准?[需要引用]我将其称为“标准”,因为在关于该方法的文章中明确提到了它。请注意,[1,2,3],[2,1,3],[3,2,1]在这里都有相同的哈希值。因此[x,x,y],[x,y,x],[y,x]对于x的任何值。Donald Knuth没有查看MSDN示例片段:)请,请,请,不要使用接受的答案。在上面重复的问题中使用答案!接受的问题是无休止的(倾向于0,倾向于0xffff…,不同对象的相同哈希,不平衡哈希,等等)。对于一个Int32中的三个Int16,对不同对象使用相同的代码不是不可避免的吗?请,请,请,不要使用接受的答案。在上面重复的问题中使用答案!接受的问题是无止境的(倾向于0,倾向于0xffff…,不同对象的相同哈希,不平衡哈希,等等)对于一个Int32中的三个Int16,对不同的对象使用相同的代码不是不可避免的吗?