我想在C#中創建一個動態數量的列表,但我不確定要寫什麼。這裏是我的:動態列表數
List<List<ISpoolerObject>> writer = new List<List<ISpoolerObject>>();
for(int z=0; z < numPartitions; z++)
writer[z] = new;
我知道頂部是正確的,但我不知道什麼把新的權利在循環內。
我想在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();
您應該使用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);
}
注意,你將不得不面對與地方填充各列表的道路。
如果你事先知道你要多少項目裝進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>());
}