C# dictionary 自定义类型的containkey 方法实现

​https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.7.2​​​

public class myVectorEqualityComparer : IEqualityComparer<MyVector3>
{
public bool Equals(MyVector3 x, MyVector3 y)
{
if (System.Object.ReferenceEquals(x, y)) return true;
if (System.Object.ReferenceEquals(x, null) || System.Object.ReferenceEquals(y, null))
return false;
return x.x.Equals(y.x) && x.y.Equals(y.y) && x.z.Equals(y.z);
}

public int GetHashCode(MyVector3 obj)
{
if (System.Object.ReferenceEquals(obj, null)) return 0;
return obj.x.GetHashCode() ^ obj.y.GetHashCode() ^ obj.z.GetHashCode();
}


}
[Serializable]
public class MyVector3
{
public float x;
public float y;
public float z;

public override string ToString()
{
return "x " + x + " y " + y + " z " + z;
}

}


void Start()
{
var myVectorEqualityComparer boxEqC = new myVectorEqualityComparer();
}