索引超出范围例外:列表不起作用,添加范围
我得到索引超出范围例外。我放弃它,它是专门在“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;
}
}
当你这样做的时候,你会得到一个空盒子,可以存储一串字符串,但是它里面什么都没有。尝试访问元素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);
}
我不确定发生了什么事。大家都在建议“s.Add(新名单
然后不确定@Bilal。如果您按原样复制了上面的代码,并且抛出了完全相同的异常,那么我会有点不知所措。 –
对不起,我认为你最后的代码块是其他人的建议。我又看了一遍,贴上了密码,瞧,问题解决了。谢谢。 –
您已经新增了列表>但未添加任何新列表。
这是一个非常简洁的循环,应该有所帮助。
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" });
}
已更新能够解决我原来的问题。
其实他需要一个's.Add(新列表
对不起,这两种方法仍然会在“s [i]”部分创建一个超出范围的异常。 –
在访问s [i]之前,您必须添加一个新列表。并且需要为for循环的每次迭代添加一个新列表,以确保可以访问一个列表。 –
您已经创建了一个空的列表,并试图访问其内部 – DavidG
我在第7行的“for”条件检查的无效位置。 –
没有'[i]'是问题 – DavidG