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();
タイプに入れるアイテムの数が事前にわかっている場合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>());
}
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);
}
将来どこかで個々のリストにデータを入力する必要があることに注意してください。