0

我使用以下方法创建了一个列表:

List<int> foo = new List<int>();

创建此索引后,我需要能够将值插入到任何索引中。如果我有

foo[325] = 55;

anArgumentOutOfRangeException抛出以下详细信息:

Index must be within the bounds of the List.
Parameter name: index

我必须做什么才能纠正这个问题?我可以用虚拟值填充列表,然后在填充列表后访问索引,但这似乎是一个混乱的解决方案。

4

3 回答 3

3

也许 List<> 不是用于存储的正确数据类型。

如果您使用 aDictionary<int, int>()您可以只维护您希望的索引:

Dictionary<int, int> foo = new Dictionary<int, int>();

foo.Add(idx, val);

并检索:

var Value = foo[idx];

如果您打算实际使用每个索引,最好这样做:

List<int> foo = Enumerable.Range(0, MaxNumber).ToList();

预先填写清单。

于 2012-05-14T17:24:40.943 回答
2

如果您确实需要随机访问,System.Collections.Generic.Dictionary 类可能会更好

于 2012-05-14T17:25:18.260 回答
1

您可能想要使用数组而不是列表。但是你必须指定一个大小。

var foo = new int[500];
foo[325] = 55;
于 2012-05-14T17:24:56.900 回答