我制作了一个解析命令行参数的程序...... 我的代码:
for (var x = 0; x < args.Length; x++)
{
switch (args[x].Trim())
{
case "--message":
if (args[x + 1] == null) // <= the problem
{
Console.WriteLine("Option {0} requires an argument.", args[x]);
Environment.Exit(1);
}
else
{
Console.WriteLine("Your message: " + args[x + 1]);
Environment.Exit(0);
}
break;
}
}
因此,当我输入:&#39; myprogram.exe --message mymessage&#39;时,程序会打印我的消息而不会出现任何错误。但我的问题是:如果没有指定消息:&#39; myprogram.exe --message&#39;,它会崩溃,因为args [x + 1]不存在。如何检查args [x + 1]是否存在?
PS:感谢downvote!
感谢您的回答! -AppPrinter
答案 0 :(得分:0)
替换
if (args[x + 1] == null)
与
if (args.Length <= x + 1 && args[x + 1] == null)
检查args
中是否至少有x + 1项。 #
只是一个想法:有几个框架用于解析命令行参数。您不必编写自己的逻辑;)