SomeObjects的HashSet和包含int参数的函数

时间:2015-08-23 08:07:57

标签: c# contains hashset

假设我们有类SomeObject,包含许多字段并在HashSet中存储实例。 对于HashSet,我们只需要一个字段:int ID,因此我们覆盖了GetHashCode()和Equals()方法。

现在我的问题是:我们可以以某种方式使用hashSet.Contains(someIntVariable)而不是创建SomeObject类型的全新对象吗? 我的意思是,如果只有int字段是重要的,我们可以使用包含给定的int参数的函数吗?

我需要它来检查对象是否已经存在并且不想创建整个样本对象。

1 个答案:

答案 0 :(得分:1)

遗憾的是,

HashSet无法使用不同的类型的对象进行搜索并获得所存储的内容。理论上可以存在这种功能,也许你可以在网上找到一个这样做的收集库。

最佳解决方法:

创建单独的密钥结构(例如MyKey)并使用Dictionary<MyKey, MyValue>。这样您就可以在不创建对象的情况下创建密钥。

或者,您可以创建一个封装结构,封装一个键或一个整个对象。您可以廉价地实例化该结构并将其传递给HashSet。我发现这比第一个想法更复杂。