我正在尝试在C#中创建动态数量的列表,但我不确定要写什么。这就是我所拥有的:
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();
for(int z=0; z < numPartitions; z++)
writer[z] = new;
我知道顶部是正确的,但我只是不确定在循环内部的新右侧放置什么。
答案 0 :(得分:3)
您必须使用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();
答案 1 :(得分:1)
您应该使用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();
答案 2 :(得分:1)
如果您提前知道要将多少项放入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>());
}
答案 3 :(得分:0)
由于您没有使用任何元素初始化列表列表,因此您将无法使用。
Add()new List<ISpoolerObject>()
。
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();
for(int z = 0; z < numPartitions; z++)
{
writer.Add(new List<ISpoolerObject>());
}
答案 4 :(得分:0)
尝试将其分解为多个步骤
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);
}
请注意,您将不得不处理在不久的某个地方填写个别列表。