在c#中获取数组外的索引
本文关键字:索引 数组 获取 | 更新日期: 2023-09-27 18:02:11
这个程序应该显示目录的路径,如果目录存在,那么它也应该显示其中的文件与以下扩展名(即。doc, .pdf, .jpg, .jpeg),但我得到一个错误
*索引超出数组边界
在这行代码
string directoryPath = args[0];
这是main函数
中的代码 class Program
{
static void Main(string[] args)
{
string directoryPath = args[0];
string[] filesList, filesListTmp;
IFileOperation[] opList = { new FileProcNameAfter10(),
new FileProcEnc(),
new FileProcByExt("jpeg"),
new FileProcByExt("jpg"),
new FileProcByExt("doc"),
new FileProcByExt("pdf"),
new FileProcByExt("djvu")
};
if (Directory.Exists(directoryPath))
{
filesList = Directory.GetFiles(directoryPath);
while (true)
{
Thread.Sleep(500);
filesListTmp = Directory.GetFiles(directoryPath);
foreach (var elem in Enumerable.Except<string>(filesListTmp, filesList))
{
Console.WriteLine(elem);
foreach (var op in opList)
{
if (op.Accept(elem)) op.Process(elem);
}
}
filesList = filesListTmp;
if (Console.KeyAvailable == true && Console.ReadKey(true).Key == ConsoleKey.Escape) break;
}
}
else
{
Console.WriteLine("There is no such directory.");
}
}
}
我该如何处理这个错误它似乎是常见的,但它发生在不同的方式
您希望用户在程序启动时输入路径还是在他们启动程序时输入路径?如果它是第一个,那么您应该添加一个Console.Read()方法来请求路径。
如果是后者,那么您需要在启动程序时将路径作为参数传递。在从args数组中读取数据之前,您还应该对它进行检查,以检查它是否包含数据以及数据是否为有效路径。
类似:
if(args.Length > 0 && Directory.Exists(args[0]))
{
// Do Something.
}
在运行程序时需要将必要的参数传递给程序。您可以通过从命令行运行程序来实现这一点,或者在运行Visual Studio时执行以下操作:
- 右键单击项目 性>
- 调试标记
- 在开始选项->命令行参数下输入参数
您可能希望从命令行将参数传递给程序。
:
> yourProgram.exe directoryName
同样,为了避免在代码中出现这样的问题,
if(args.Length > 0){
string directoryPath = args[0];
}else{
//print a help message and exit, or do something like set the
//default directoryPath to current directory
}