2013-02-07 46 views
1

你好,我不知道爲什麼我不可能完成我之前聲明的對象集合。無法在c#中初始化列表集合?

這裏是我的聲明列表的對象列表。(我要的對象列表存儲在參考列表):

private List<List<Classes.instancedModel>> listInstance; 

我初始化在構造函數中

listInstance = new List<List<Classes.instancedModel>>(); 

我完成我的名單之前,初始化我的列表的第一陣列在一個循環,但我不能......

listInstance[0] = new List<Classes.instancedModel>(); 
listInstance[0].Add(new instancedModel(1, position_model_origin, new Vector3(0, 0, 0), 1, Game)); 

但我會拋出一個例外? n的類型:ArgumentOutOfRangeException

有人可以向我解釋如何聲明兩個動態列表並填充蒼蠅作爲我的例子嗎?與列表到一個列表

+0

哪一行是那個錯誤信息? –

+0

到目前爲止看起來還不錯。看看'instancesModel'類的構造函數。 – Spontifixus

回答

7

列表不是數組。除非至少有一個項目,否則您不得使用索引器訪問。

listInstance[0] = new List<Classes.instancedModel>(); <--- NO!! 

listInstance.Add(new List<Classes.instancedModel>()); <--- YES!! 
+0

如此明顯。如此隱藏。發現得好! ;) – Spontifixus

+0

非常感謝!很抱歉,這個問題如此明顯。我把你的第一個答案解決了我的問題。 –

+0

@Spontifixus哈哈,是啊! –

1

你真正想要的是項目添加到您的列表:

listInstance.Add(new List<Classes.instancedModel>()); //listInstance is List not an array 

List<T>Array是不一樣的。當您致電instanceOfList[index]時,請致電indexer。如果索引器在index將找不到元素將拋出ArgumentOutOfRangeException

+0

完美!非常感謝你的解釋。我把它解釋爲高級的一點^^ –

+0

@MehdiBugnard不客氣。 – Leri

1

你需要使用一個索引之前,首先調用Add方法:

private List<List<instancedModel>> listInstance; 
listInstance = new List<List<instancedModel>>(); 

listInstance.Add(new List<Classes.instancedModel>()); 

listInstance[0].Add(new instancedModel(1, position_model_origin, new Vector3(0, 0, 0), 1, Game)); 
1

listInstance [0],直到你創建它不存在 - 你只有創建的列表,你有沒有添加了任何東西。

var listInstance = new List<List<instancedModel>>(); 

listInstance.Add(new List<instancedModel> { 
    new instancedModel(1, position_model_origin, new Vector3(0, 0, 0), 1, Game) 
});