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

Jef*_*Fay 0 c# queue compare

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

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

Jon*_*eet 7

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

你可以通过覆盖Equals和克服这个来克服这一点GetHashCode.我还建议实施IEquatable<T>以明确这一点.您的哈希代码实现应该从与相等操作相同的值生成哈希代码.