我想知道是否有另一种使用默认值初始化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方法,没有运气。
答案 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>>();