我遇到了ArgumentOutOfRangeException
。它涉及到在一段代码如下:列表<>似乎不能包含超过500个项目
public static void readPuzzle()
{
List<int> conversion = new List<int>(factor * factor * factor * factor);
int count = 0;
using (StreamReader codeString = new StreamReader(path))
{
String line = codeString.ReadToEnd();
String[] split = line.Split(',');
foreach (String a in split)
{
conversion.Add(Convert.ToInt32(a));
}
for (int panelX = 0; panelX < factor; panelX++)
{
for (int panelY = 0; panelY < factor; panelY++)
{
values[panelX, panelY] = new int[factor, factor];
for (int squareX = 0; squareX < factor; squareX++)
{
for (int squareY = 0; squareY < factor; squareY++)
{
values[panelX, panelY][squareX, squareY] = conversion[count];
count++;
}
}
}
}
}
}
指示的行是:
values[panelX, panelY][squareX, squareY] = conversion[count];
我相信这是在参考List<>
转换的索引。当计数为500并且索引为[499]
时,代码停止运行。我现在已经手动将列表大小设置为625(因子= 5),它应该完全是列表中的项目数量。它似乎没有任何区别。我读过其他人的问题,他们提到了超过一百万件物品的清单,所以我不明白为什么我会遇到这个问题。任何帮助,将不胜感激。
检查'split'的大小以查看实际添加到列表中的元素数量。 – MAV
定义值在哪里?它是什么? – dcaswell
难道是你正在阅读的文件只有500行吗?列表的构造函数参数不会填充列表,它仅为625预留空间,仅作为速度/内存优化。 – 2013-08-24 21:00:19