C#索引超出范围异常

时间:2012-01-12 21:41:02

标签: exception indexing range out

我似乎遇到了C#2008的问题。我正在创建一个简单的程序,显示特定文件夹中所有文件的列表。我选择在Windows文件夹中试验系统文件。它显示了文件列表,然后发生异常。这是代码:

if (EnterNumber == "1")
{
    Console.WriteLine("Files");
    DirectoryInfo folderInfo = new DirectoryInfo("F:\\WINDOWS");
    FileInfo[] Files = folderInfo.GetFiles();

    String UserChoice = Console.ReadLine();


    for (int index = 0; index < Files.Length; index++)
    {


        Console.WriteLine("{0}, {1} ({2})", index++, Files[index].Name, Files[index].Length);
    }
    Console.Write("Return To Main Menu?: ");
    if (UserChoice == "y")
    { 

因此,用户按下数字1以显示文件,并显示在列表中。它显示Windows文件夹中的文件。但是你能看到控制台写入几行信息吗?出现一行,显示错误消息。发生异常时说索引超出了数组的范围。我知道阵列是什么,但我在应用这些信息时遇到了问题。如果您能告诉我一种消除此错误的方法,那么我将不胜感激。所以文件显示正常,无论列表有多长。此外,有没有办法让用户清除屏幕并返回主菜单?我已经尝试过clear函数,但是我应该继续添加允许用户再次输入其选择的if语句吗?

2 个答案:

答案 0 :(得分:3)

        for (int index = 0; index < Files.Length; index++)
        {
            Console.WriteLine("{0}, {1} ({2})", index++, Files[index].Name, Files      [index].Length);
        }

问题在于你的写作线,你再次递增索引。我只是将它改为索引而不是索引++。

答案 1 :(得分:2)

尝试更改:

Console.WriteLine("{0}, {1} ({2})", index++, Files[index].Name, Files[index].Length);

为:

Console.WriteLine("{0}, {1} ({2})", index, Files[index].Name, Files[index].Length);

++运算符(MSDN documentation)在循环中递增两次,此时您可能只希望一次运行一个。