2011-07-23 17 views
1

我創建了一個列表,像這樣一類級別字段:爲什麼列表<T>當我索引它時會炸燬?

_intCol[0] = 0; 

例外:

private readonly IList<int> _intCol = new List<int>(); 

然後我索引,並將其與下面的異常炸燬

指數超出範圍。必須爲非負且小於 的collection.Parameter名大小:指數

+0

您還沒有添加任何東西。所以,索引0還不存在。 – kenny

+3

你讀過錯誤了嗎? – ChaosPandion

+1

您收藏的大小爲零,您的索引爲零。零不小於零,因此是錯誤信息。 – aroth

回答

6

在這一點上,_intCol是大小爲0的列表,它不會對第一位置的元素。您可以使用_intCol.Add(0);

參見:

如果你想以插入的方式,你可以使用一個Dictionary<int,int>元素,但是請注意,你的元素是沒有順序的 - 你只是將數字映射到數字。例如:

Dictionary<int, int> integers = new Dictionary<int, int>(); 
integers[0] = 13; 
integers[42] = 14; 

integers現在有兩個項目,在沒有特定的順序:

{42: 14, 0: 13} 
+0

爲什麼我應該使用這種類型的索引? – JamesRedcoat

+0

@JamesRedcoat - 看我的編輯。不過,這取決於你需要什麼。例如,如果您知道集合的大小,或者想要在空隙之間填充空(0)元素,則可以初始化數組。這裏有很多考慮因素...... – Kobi

2

如果您還沒有填充任何元素的列表,然後嘗試引用元素0會失敗,就像那。您應該首先檢查Count,並且不要引用大於Count-1的任何元素索引。

相關問題