索引超出范围例外:列表不起作用,添加范围

问题描述:

我得到索引超出范围例外。我放弃它,它是专门在“s [i] .AddRange()”的部分“GetFiles()”方法只是“Directory.GetFiles()”,但它可以接受多个文件结尾。索引超出范围例外:列表不起作用,添加范围

static List<List<string>> directories 
      { 
       get 
       { 
        Debug.Log(folders.Length); 
        List<List<string>> s = new List<List<string>>(); 
        for (int i = 0; (i < folders.Length); i++) 
        { 
         s[i].AddRange(GetFiles(folders[i], "*.png,*.jpg,*.bmp,*.tif,*.tga,*.psd").ToList()); 
         s[i].AddRange(GetFiles(folders[i], "*.prefab").ToList()); 
        } 
        return s; 
       } 
      } 
+1

您已经创建了一个空的列表,并试图访问其内部 – DavidG

+0

我在第7行的“for”条件检查的无效位置。 –

+0

没有'[i]'是问题 – DavidG

当你这样做的时候,你会得到一个空盒子,可以存储一串字符串,但是它里面什么都没有。尝试访问元素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(新名单());”但由于某种原因,它不起作用。另外,对于你的第二个建议,我要使用列表的方式要求按照我向你展示的方式完成。 –

+0

然后不确定@Bilal。如果您按原样复制了上面的代码,并且抛出了完全相同的异常,那么我会有点不知所措。 –

+0

对不起,我认为你最后的代码块是其他人的建议。我又看了一遍,贴上了密码,瞧,问题解决了。谢谢。 –

您已经新增了列表>但未添加任何新列表。

这是一个非常简洁的循环,应该有所帮助。

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循环的每次迭代添加一个新列表,以确保可以访问一个列表。 –