HashSet中的HashSet c#元素修改

时间:2016-04-25 19:21:54

标签: c# linq hashset

如何修改HashSet中的元素?

我的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; 

1 个答案:

答案 0 :(得分:1)

由于特定哈希集中的项目是不可变的,因此不能改变项目。您需要添加一个可变类型的项目才能改变它们(即使这样,如果您以改变该对象的相等或哈希代码的方式对其进行改变,您自己也会造成重大问题) )。

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

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