2016-04-25 331 views
-1

如何修改HashSet中的元素?HashSet中的HashSet c#元素修改

我HashSet的样子:

HashSet<int> mynumbers = new HashSet<int>(); 
mynumbers.Add(rnd.Next(1, 11)); 
mynumbers.Add(rnd.Next(1, 11)); 

输出功能也可以用:

Console.WriteLine(mynumbers.ElementAt(0) + "and" + mynumbers.ElementAt(1)); 

看起来例如:

2和10

,但我怎么能现在修改HashSet中的第一个值。

这是不可能的:

mynumbers.ElementAt(0) = 1; 
+3

'HashSet '按设计不保存顺序。你希望实现什么? –

回答

1

因为在那个特定的哈希集合的项目是不可变的,你无法变异的项目。您需要添加一个可变类型的项目才能进行变异(即使这样,如果您以改变该对象的相等或散列代码的方式进行变异,您也会对自己造成重大问题)。

您可以从该集合中删除该项目并添加一个新项目(使用这些操作的相应名称的方法),但这绝不会改变您添加的项目。

当然,HashSet是一个无序集合,集合中没有“第一个”项目,给定对象只是或不在集合中,它不在集合中的给定位置。如果您需要集合中的物品有位置,那么您需要使用不同类型的集合。