<分区>
首先,我找到了 3D 整数向量的 GetHashCode 实现,但我不知道这是否是一个好实现(至少我不是 100% 确定):
public struct Vector3i
{
public int x;
public int y;
public int z;
public override int GetHashCode ()
{
return x.GetHashCode () ^ y.GetHashCode () << 2 ^ z.GetHashCode () >> 2;
}
}
据此,我想创建一对 3D 向量(我们称它们为 A 和 B),其哈希码与向量 A 和 B 的顺序无关。换句话说,我想要这对 (A, B) ) 具有与 (B, A) 对相同的哈希码。 我想到了这样的事情:
public struct Vector3iPair
{
public Vector3i a;
public Vector3i b;
public override int GetHashCode ()
{
return a.GetHashCode () ^ b.GetHashCode ();
}
}
您认为这会有正确的行为吗?