实例化后访问列表索引

时间:2012-05-14 17:21:51

标签: c# list exception

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

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

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

foo[325] = 55;

抛出ArgumentOutOfRangeException,其中包含以下详细信息:

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

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

3 个答案:

答案 0 :(得分:3)

可能是列表&lt;&gt;不是用于存储的正确数据类型。

如果你使用了Dictionary<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();

预先填写清单。

答案 1 :(得分:2)

如果你真的需要随机访问,

System.Collections.Generic.Dictionary类可能会更好

答案 2 :(得分:1)

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

var foo = new int[500];
foo[325] = 55;