在没有EqualityComparer的班级中进行了比较?

时间:2010-10-26 13:00:37

标签: c# queue compare

我想在排队之前检查某个对象是否在队列中。如果没有明确定义EqualityComparer,那么Contains()函数会比较什么?

如果它比较属性值,那就完美了。如果它比较以查看队列中是否存在对该对象的引用,那么这会破坏我在代码中尝试完成的任务。

2 个答案:

答案 0 :(得分:7)

对于类,默认的相等操作是通过引用 - 它假定对象标识和相等基本相同。

您可以通过覆盖EqualsGetHashCode来解决此问题。我还建议实施IEquatable<T>以明确这一点。您的哈希代码实现应该从与相等操作相同的值生成哈希代码。

答案 1 :(得分:0)

引用类型的默认值是比较引用。

但是,如果类型实现IEquatable<>,它可以进行不同的比较。如果您需要进行特定的相等比较,则需要自己创建一个。