key:value
のようなフォーマットのファイルを読み込み、Dictionary
に追加するアプリがあります。これは小さなファイルではうまくいきますが、65,000行のファイルを読み込もうとするとうまく動作せず、Dictionary.TryAdd()
にIndex was outside the bounds of the array.
がスローされます。インデックスが辞書の配列の境界外にありました
私のアプリケーションを64ビットアーキテクチャ用にコンパイルし、もapp.config
に設定します。
private void LoadFile()
{
ConcurrentDictionary<string, string> Dict = new ConcurrentDictionary<string, string>();
OpenFileDialog dlgFile = new OpenFileDialog();
dlgFile.Filter = "All Files (*.*)|*.*";
dlgFile.FilterIndex = 1;
if (dlgFile.ShowDialog() == DialogResult.OK)
{
foreach (string line in File.ReadLines(dlgFile.FileName))
{
// Index was outside the bounds of the array.
Dict.TryAdd(line.Split(':')[0], line.Split(':')[1]);
}
}
}
私は問題が配列のインデックスにあると思います。すべての "行"が必要な形式であることを確認していますか?別名は ':'で分割できますか? –
@Daniel Leszenはい、彼らは –
です。もう一度チェックすることをお勧めします。例外がスローされると、その値が何であるかを確認するためにマウスオーバーします。可能性は、 ':'が含まれていない可能性があります - もしあなたがすべてそうしているとすれば、時には最後の(空の)行です。 –