1

C# で動的な数のリストを作成しようとしていますが、何を書けばよいかわかりません。これが私が持っているものです:

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

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

上部が正しいことはわかっていますが、ループ内の新しい部分の右側に何を配置すればよいかわかりません。

4

5 に答える 5

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();
于 2013-04-02T19:14:22.080 に答える
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>());
}
于 2013-04-02T19:16:28.627 に答える
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();
于 2013-04-02T19:14:23.820 に答える
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>());
}
于 2013-04-02T19:14:43.277 に答える
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);
}

将来どこかで個々のリストにデータを入力する必要があることに注意してください。

于 2013-04-02T19:15:05.740 に答える