Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SomeObjects的HashSet,包含带int参数的函数_C#_Contains_Hashset - Fatal编程技术网

C# SomeObjects的HashSet,包含带int参数的函数

C# SomeObjects的HashSet,包含带int参数的函数,c#,contains,hashset,C#,Contains,Hashset,假设我们有一个包含许多字段的类SomeObject,并在HashSet中存储实例。 对于HashSet comprison,我们只需要一个字段:int ID,因此我们重写了GetHashCode()和Equals()方法 现在我的问题是:我们是否可以使用hashSet.Contains(someIntVariable)而不是创建SomeObject类型的全新对象? 我的意思是,如果只有int字段是重要的,我们可以使用给定int参数的Contains函数吗 我需要它来检查对象是否已经存在,并且不想

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

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


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

HashSet
不幸的是,它无法使用不同类型的对象进行搜索并获取存储的内容。这种能力理论上是存在的,也许你可以在网上找到一个这样的图书馆

最佳解决方法:

创建一个单独的键结构(例如,
MyKey
)并使用
字典
。这样,您就可以创建关键点而无需创建对象


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

为什么不将ID存储在
哈希集中呢?然后呢?我仍然需要对象,因此我必须创建两个哈希集,一个用于ID,另一个用于对象。您实际在使用该哈希集做什么?为什么要使用
HashSet
而不是
Dictionary
?添加实例,并按ID搜索它们(我们不能说关于ID的任何内容,它可以是1或234234)