首先,我找到了一个用于 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 ();
}
}
你认为这会有正确的行为吗?