2013-04-02 37 views
1

我想在C#中創建一個動態數量的列表,但我不確定要寫什麼。這裏是我的:動態列表數

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

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

我知道頂部是正確的,但我不知道什麼把新的權利在循環內。

回答

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

您應該使用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(); 
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>()); 
} 
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); 
} 

注意,你將不得不面對與地方填充各列表的道路。

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>()); 
}