动态列表数量

时间:2013-04-02 19:12:16

标签: c# list

我正在尝试在C#中创建动态数量的列表,但我不确定要写什么。这就是我所拥有的:

List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();

for(int z=0; z < numPartitions; z++)
    writer[z] = new;

我知道顶部是正确的,但我只是不确定在循环内部的新右侧放置什么。

5 个答案:

答案 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);
}

请注意,您将不得不处理在不久的某个地方填写个别列表。