我得到Index was outside the bounds of the array.
string[] paths = {
"\\\\server\\c$\\folder\\subfolder\\user1\\300\\1\\abc.docx",
"\\\\server\\c$\\folder\\subfolder\\user2\\400\\1\\xyz.docx",
};
FileInfo[] f = new FileInfo[paths.Length];
for (int i = 0; i <= paths.Length; i++)
{
f[i] = new FileInfo(paths[i]);
Console.WriteLine(f[i].Length);
}
我似乎无法弄明白为什么,任何想法?
答案 0 :(得分:4)
使用<
代替<=
for (int i = 0; i < paths.Length; i++)
{
f[i] = new FileInfo(paths[i]);
Console.WriteLine(f[i].Length);
}
答案 1 :(得分:1)
数组从0开始计算itens。因此,如果你有一个长度为2的数组,你的对象将位于[0]和[1]位置。如果您尝试访问位置[2],您将得到索引超出数组异常的范围,因为此数组中不存在索引2。
在你的for循环中,你正在使用&lt; = paths.Length 。您的路径长度为2. 2小于或等于2,因此您的代码将按此执行
f[2] = new FileInfo(paths[2]) //Position 2 doesn't exist
要解决此问题,只需更改:
for (int i = 0; i <= paths.Length; i++)
要:
for (int i = 0; i < paths.Length; i++)
答案 2 :(得分:0)
数组中有两个项目
paths[0], paths[1]
你的三个项目循环
paths[0], paths[1], paths[2]
要更正此问题,请更改
for (int i = 0; i <= paths.Length; i++)
到
for (int i = 0; i < paths.Length; i++)