我使用以下方法创建了一个列表:
List<int> foo = new List<int>();
我需要能够在创建之后将值插入到任何索引中。如果我有
foo[325] = 55;
抛出ArgumentOutOfRangeException
,其中包含以下详细信息:
Index must be within the bounds of the List.
Parameter name: index
为了纠正这个问题,我该怎么做?我可以用虚拟值填充列表,然后在列表填充后访问索引,但这似乎是一个混乱的解决方案。
答案 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;