我似乎遇到了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语句吗?
答案 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)在循环中递增两次,此时您可能只希望一次运行一个。