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