2

我似乎遇到了 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 语句吗?

4

2 回答 2

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

The problem is in your writeline, you are incrementing index again. I would just change it to index and not index++.

于 2012-01-12T21:45:23.817 回答
2

Try changing:

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

to:

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

The ++ operator (MSDN documentation) is being incremented twice in your loop, when you probably only want to go one at a time.

于 2012-01-12T21:44:19.603 回答