动态列表数
本文关键字:列表 动态 | 更新日期: 2023-09-27 18:07:18
我试图在c#中创建动态数量的列表,但我不确定该写什么。以下是我的文件:
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();
for(int z=0; z < numPartitions; z++)
writer[z] = new;
我知道上面的部分是正确的,但是我只是不确定在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();
如果你事先知道要在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>());
}
您所拥有的将不起作用,因为您没有使用任何元素初始化List of Lists。您必须为每个分区设置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);
}