2017-04-23 31 views
0

インデックスが範囲外の例外を受け取りました。私はそれをデバッグし、特に "s [i] .AddRange()"の部分にあります。 "GetFiles()"メソッドは単に "Directory.GetFiles()"ですが、複数のファイルの終了を受け入れることができます。インデックス範囲外の例外:リストが追加範囲を使用して動作しない

+1

、それ私が「のための」条件に7行で、そのためにチェック – DavidG

+0

内の無効な位置にアクセスしようとしている。ただ、代わりにこれを行います。 –

+0

いいえ '[i]'は問題です – DavidG

答えて

1

これを実行すると、文字列のボックスを格納する可能性のある空のボックスが表示されますが、まだその中には何もありません。要素iにアクセスしようとすると、表示されている例外がスローされます。

List<List<string>> s = new List<List<string>>(); 

アイテムにアクセスする前に、アイテムを追加する必要があります。

s.Add(new List<string>()); 

あなたの場合でも、空のリストを追加してインデックスを使用してアクセスすることはありません。あなたは空のリストを作成している

List<List<string>> s = new List<List<string>>(); 
for (int i = 0; (i < folders.Length); i++) 
{ 
    var list = GetFiles(folders[i], "*.png,*.jpg,*.bmp,*.tif,*.tga,*.psd").ToList(); 
    list.AddRange(GetFiles(folders[i], "*.prefab").ToList()); 
    s.Add(list); 
} 
+0

何が起こっているのか分かりません。誰もが "s.Add(新しいリスト());"何らかの理由で動作していません。また、あなたの2番目の提案については、私がリストを使用する方法は、私があなたを見せているようにそれを行う必要があります。 –

+0

@Bilalはよくわかりません。上記のコードをそのままコピーして、まったく同じ例外をスローした場合、私は少し損失に陥っています。 –

+0

申し訳ありませんが、皆さんの最後のコードブロックは他の誰もが示唆していたコードブロックであると仮定しました。私はそれをもう一度見て、コードを貼り付けて、問題が解決した。ありがとうございました。 –

0

あなたはリストを新規作成しましたが、新しいリストは追加していません。

ここでは、非常に手間のかかるforループが役立ちます。

List<List<String>> s = new List<List<string>>(); 
for (int i = 0; i < 10; ++i) { 
    s.Add(new List<String>()); 
    s[i].AddRange(new String[] { "a", "b", "c" }); 
} 

オリジナルの回答の問題を修正するように更新されました。

+2

実際に彼は 's.Add(新しいリスト());'が必要です。 –

+0

残念ながら、これらの両方で、 "s [i]"部分の範囲外のインデックス例外がまだ作成されています。 –

+0

s [i]にアクセスする前に、新しいリストを追加する必要があります。また、forループの各繰り返しに対して、アクセス可能な新しいリストを追加する必要があります。 –

関連する問題