【问题标题】:Internal implementation of .NET HashSet contains method?.NET HashSet 的内部实现包含方法?
【发布时间】:2010-09-05 04:27:44
【问题描述】:

我正在为我用 C# 编写的库编写测试。而且我想测试两个列表是否相同当且仅当它们具有相同的元素(不需要相同顺序的元素)。我尝试将列表转换为哈希集并检查两个哈希集是否相同。但是运行结果不是我所期望的。

谁能解释一下 hashset contains 方法是如何工作的?它是通过对象 getHashCode 方法还是 equals 方法比较两个对象?谢谢!

【问题讨论】:

    标签: c# .net testing hashset


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-21
      • 2010-12-19
      • 2011-10-24
      • 1970-01-01
      • 2014-11-13
      • 2011-07-27
      • 1970-01-01
      • 2013-11-08
      相关资源
      最近更新 更多