我創建了一個列表,像這樣一類級別字段:爲什麼列表<T>當我索引它時會炸燬?
_intCol[0] = 0;
例外:
private readonly IList<int> _intCol = new List<int>();
然後我索引,並將其與下面的異常炸燬
指數超出範圍。必須爲非負且小於 的collection.Parameter名大小:指數
我創建了一個列表,像這樣一類級別字段:爲什麼列表<T>當我索引它時會炸燬?
_intCol[0] = 0;
例外:
private readonly IList<int> _intCol = new List<int>();
然後我索引,並將其與下面的異常炸燬
指數超出範圍。必須爲非負且小於 的collection.Parameter名大小:指數
在這一點上,_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}
爲什麼我應該使用這種類型的索引? – JamesRedcoat
@JamesRedcoat - 看我的編輯。不過,這取決於你需要什麼。例如,如果您知道集合的大小,或者想要在空隙之間填充空(0)元素,則可以初始化數組。這裏有很多考慮因素...... – Kobi
如果您還沒有填充任何元素的列表,然後嘗試引用元素0會失敗,就像那。您應該首先檢查Count,並且不要引用大於Count-1的任何元素索引。
您還沒有添加任何東西。所以,索引0還不存在。 – kenny
你讀過錯誤了嗎? – ChaosPandion
您收藏的大小爲零,您的索引爲零。零不小於零,因此是錯誤信息。 – aroth