我想在排队之前检查某个对象是否在队列中。如果没有明确定义EqualityComparer,那么Contains()函数会比较什么?
如果它比较属性值,那就完美了。如果它比较以查看队列中是否存在对该对象的引用,那么这会破坏我在代码中尝试完成的任务。
答案 0 :(得分:7)
对于类,默认的相等操作是通过引用 - 它假定对象标识和相等基本相同。
您可以通过覆盖Equals
和GetHashCode
来解决此问题。我还建议实施IEquatable<T>
以明确这一点。您的哈希代码实现应该从与相等操作相同的值生成哈希代码。
答案 1 :(得分:0)
引用类型的默认值是比较引用。
但是,如果类型实现IEquatable<>
,它可以进行不同的比较。如果您需要进行特定的相等比较,则需要自己创建一个。