这就是我所拥有的:
class A
{
// The uniqueness of instance must be detected by this property
public string Key { get; set; }
// There are other properties
}
var set = HashSet<A>()
我的一般目的是:
通过属性值提供
set
集合中实例的身份Key
使此收集尽可能快地用于包含操作
回答以下问题可能有助于我实现这一目的:
- 什么用于运行方法,例如
Contains
,Add
必须确定实例的唯一性:GetHashCode() 还是 IEquatable?很可能 GetHashCode() as HashSet 声明搜索速度非常快。 - 默认
String.GetHashCode()
实现不保证 2 个不同字符串的哈希唯一性,那么如何在考虑性能的情况下提供唯一性? - HashSet 是否完全使用了 IEquatable?
请注意,他的集合仅在运行时创建和销毁,不会保存到数据库中