SomeObjects 的 HashSet 和包含带有 int 参数的函数
HashSet of SomeObjects and Contains function with int argument
假设我们有 class 个具有许多字段并在 HashSet 中存储实例的对象。
对于 HashSet comprison,我们只需要一个字段:int ID,因此我们重写了 GetHashCode() 和 Equals() 方法。
现在我的问题是:我们能否以某种方式使用 hashSet.Contains(someIntVariable) 而不是创建 SomeObject 类型的全新对象?
我的意思是,如果只有 int 字段很重要,我们可以使用 Contains 函数和给定的 int 参数吗?
我需要它来检查对象是否已经存在并且不想创建整个样本对象。
不幸的是,HashSet
无法搜索 不同的 类型的对象并获取存储的内容。理论上可能存在此功能,也许您可以在 Web 上找到执行此操作的集合库。
最佳解决方法:
创建一个单独的键结构(例如 MyKey
)并使用 Dictionary<MyKey, MyValue>
。这样您就可以在不创建对象的情况下创建密钥。
或者,您可以创建一个包装器结构来封装一个键或整个对象。您可以廉价地实例化该结构并将其传递给 HashSet
。我发现这比第一个想法更复杂。
假设我们有 class 个具有许多字段并在 HashSet 中存储实例的对象。 对于 HashSet comprison,我们只需要一个字段:int ID,因此我们重写了 GetHashCode() 和 Equals() 方法。
现在我的问题是:我们能否以某种方式使用 hashSet.Contains(someIntVariable) 而不是创建 SomeObject 类型的全新对象? 我的意思是,如果只有 int 字段很重要,我们可以使用 Contains 函数和给定的 int 参数吗?
我需要它来检查对象是否已经存在并且不想创建整个样本对象。
HashSet
无法搜索 不同的 类型的对象并获取存储的内容。理论上可能存在此功能,也许您可以在 Web 上找到执行此操作的集合库。
最佳解决方法:
创建一个单独的键结构(例如 MyKey
)并使用 Dictionary<MyKey, MyValue>
。这样您就可以在不创建对象的情况下创建密钥。
或者,您可以创建一个包装器结构来封装一个键或整个对象。您可以廉价地实例化该结构并将其传递给 HashSet
。我发现这比第一个想法更复杂。