执行IEqualityComparer修改相等测试结果

本文关键字:测试结果 修改 IEqualityComparer 执行 | 更新日期: 2023-09-27 18:04:32

我为MyObject实现了一个IEqualityComparer<MyObject>,以便我的优先级队列能够对元素进行排序(这里的用法并不重要,但无论如何)。
因此,我实现了EqualsGetHashCode方法。

我的问题是:当我做MyObject1 == MyObject2时,它是使用我在Equals方法中编写的测试还是经典的相等性测试?

执行IEqualityComparer修改相等测试结果

假设这是一个引用类型,==只会在重载==操作符时执行任何自定义操作:

public static bool operator ==(MyClass1 x, MyClass1 y)
{
    ...
}
public static bool operator !=(MyClass1 x, MyClass1 y)
{
    ...
}

据我所知,c#编译器不知道Equals方法和==操作符之间的任何关系。