字典中使用了哪个 IEqualityComparer?

Mah*_*rla 2 c# dictionary iequalitycomparer

假设我像这样实例化一个字典

var dictionary  = new Dictionary<MyClass, SomeValue>();
Run Code Online (Sandbox Code Playgroud)

MyClass 是我自己的类,它实现了IEqualityComparer<>.

现在,当我对字典进行操作时 - 例如 Add、Contains、TryGetValue 等 - 字典是否使用默认值,EqualityComparer<T>.Default因为我从未将其传递给构造函数,还是使用 MyClass 实现的 IEqualityComparer?

谢谢

Ser*_*rvy 5

它将使用默认的相等比较器。

如果一个对象能够将自身与其他对象进行比较,那么它应该实现IEquatable,而不是IEqualityComparer. 如果一个类型实现,IEquatable那么它将被用作 的实现EqualityCOmparer.Default,否则后面跟着object.Equalsobject.GetHashCode方法。

AnIEqualityComparer旨在比较其他对象的相等性,而不是它本身。