c# - .NET HashSet 的内部实现包含方法?

标签 c# .net testing hashset

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

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

最佳答案

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

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

关于c# - .NET HashSet 的内部实现包含方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645013/

相关文章:

c# - 使用 ASP.Net 的 Crystal Reports 中的 Blob 字段

c# - 使用 FastReport.Net 创建报告

c# - async/await Tcp socket 实现只接受一个连接

c# - 如何使用 .net compact framework 3.5 隐藏数据网格中的列

java - 为什么我需要抽象类中的构造函数?

linux - 是否有将随机垃圾字节写入文件的命令?

c# - System.Net.Sockets.SocketException

c# - 在C#中读取大文件

java - Gradle - 如果项目仍然具有 SNAPSHOT 依赖项,则抛出异常

spring-boot 单元测试获取应用属性