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?
谢谢
它将使用默认的相等比较器。
如果一个对象能够将自身与其他对象进行比较,那么它应该实现IEquatable,而不是IEqualityComparer. 如果一个类型实现,IEquatable那么它将被用作 的实现EqualityCOmparer.Default,否则后面跟着object.Equals和object.GetHashCode方法。
AnIEqualityComparer旨在比较其他对象的相等性,而不是它本身。