我想在C#中创建一个动态数量的列表,但我不确定要写什么。这里是我的:动态列表数
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();
for(int z=0; z < numPartitions; z++)
writer[z] = new;
我知道顶部是正确的,但我不知道什么把新的权利在循环内。
我想在C#中创建一个动态数量的列表,但我不确定要写什么。这里是我的:动态列表数
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();
for(int z=0; z < numPartitions; z++)
writer[z] = new;
我知道顶部是正确的,但我不知道什么把新的权利在循环内。
你必须使用Add
方法,将新项目添加到List
例如:
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>(numPartitions);
for(int z = 0; z < numPartitions; z++)
{
writer.Add(new List<ISpoolerObject>());
}
只是为了好玩 - 它可以在不同的方式来完成,以及:
List<List<ISpoolerObject>> writer = Enumerable.Range(0, numPartitions).Select(x => new List<ISpoolerObject>()).ToList();
您应该使用Add
方法将列表添加到writer
。
for(int z=0; z < numPartitions; z++)
{
writer.Add(new List<ISpoolerObject>());
}
,或者您可以使用Range
方法
List<List<ISpoolerObject>> writer = Enumerable.Range(0, numPartitions)
.Select(i => new List<ISpoolerObject>())
.ToList();
你有什么是行不通的,因为你没有初始化列表与任意元素的列表。你必须Add()
new List<ISpoolerObject>()
你想要的每个分区。
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();
for(int z = 0; z < numPartitions; z++)
{
writer.Add(new List<ISpoolerObject>());
}
试着将它分解成多个步骤
for (int z = 0; z < numPartitions; z++)
{
// what do we want to add here?
// a list of IspoolerObject.
// so let's create that first.
List<ISpoolerObject> aSingleList = new List<ISpoolerObject>();
// now we add it to the list of lists
writer.Add(aSingleList);
}
注意,你将不得不面对与地方填充各列表的道路。
如果你事先知道你要多少项目装进List<T>
类型,那么你应该使用哪一个接受能力
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>(numPartitions);
这使得构造函数的List<T>
以后添加元素时更有效。至于添加新元素的实际循环,请使用Add
方法
for(int z = 0; z < numPartitions; z++) {
writer.Add(new List<ISpoolerObject>());
}