是否有另一种方法可以将默认值添加到hashset而不会干扰HashSet Count?

时间:2014-06-28 18:11:25

标签: c#

我想知道是否有另一种使用默认值初始化HashSet的方法?例如,

int[] array=new int[10];
/*This will initialize all array elements with zero*/-Value Type
HashSet<int>[] HSet= new HashSet<int>[10];
/*This will initialize all elements with Null Value*/-Reference Type

现在假设我在HSet上做了一些操作,可能是HSet [i] .ToString(),这会导致NullReferenceException。为了避免这种情况,我会这样做

for (int i = 0; i < 10; i++)
{
    HSet[i] =new HashSet<int>(){0};
}

但是这会添加元素来设置并将设置数增加到1。 我的问题是,是否有另一种方法可以将默认值添加到hashset并且不会干扰HashSet计数?.i.e必须初始化hashset并且count必须为零(理想情况下,Set中没有元素)

我尝试使用HashSet提供的Initialize方法,没有运气。

2 个答案:

答案 0 :(得分:4)

您不能拥有包含一个项目的哈希集,并且计数等于零。希望,这是有道理的。

创建一个空集(new HashSet<int>()),或者选择一个有用的默认初始元素并使用count为1,或者编写自己的set类(可能包含HashSet)。

问题就在于你要求一些不可能的东西,它闻起来像XY-Problem

答案 1 :(得分:0)

  

我的问题是,是否有另一种方法可以添加默认值   hashset并没有扰乱HashSet Count?

你不能

一旦打电话

var HSet = new HashSet<int>[10];

您创建了包含10个元素的HashSet,无论您是否设置它们都无关紧要。

  

但是这会添加元素来设置并将设置数增加到一个

不,您已经拥有包含10个元素的HashSet,因此将它们设置为默认值不会更改Count

您可以考虑使用HashSet数组来使用HashSet List列表&gt;,列表是动态的,因此当您实例化列表时

var HSet = new List<HashSet<int>>();

你将使HSet.Count()等于0。

  

我可以初始化我的hashset(非空)并将我的hashset计数归零吗?

是的,使用:

var HSet = new List<HashSet<int>>();