我遇到了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