2010-09-05 60 views
3

我正在为使用C#编写的库编写测试。我想测试两个列表是否相同,当且仅当它们具有相同的元素(不需要相同顺序的元素)。我尝试将列表转换为哈希集并检查两个哈希集是否相同。但运行结果并非我所期望的。.NET HashSet的内部实现包含方法?

任何人都可以解释哈希集包含方法的工作原理吗?它是否通过对象getHashCode方法或equals方法比较两个对象?谢谢!

回答

4

它使用传递给HashSet构造函数的IEqualityComparer <>。如果你没有通过,那么它使用EqualityComparer> <>默认。其中,如果元素类型未实现IEquatable <>,则使用该类型的Equals和GetHashCode方法。

我想你的列表包含不覆盖这些方法的对象。使用IEqualityComparer构造函数参数进行修复。