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。我发现这比第一个想法更复杂。