这是我的错误程序:
索引超出了数组
的范围
代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace command
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("First Name is " + args[0]);
Console.WriteLine("Last Name is " + args[1]);
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
问题是您没有将任何参数传递给您的程序。您可以通过从命令行运行程序来执行此操作,或者如果您通过Visual Studio运行该程序,则可以通过转到项目属性,选择“调试”选项卡并将其输入“开始”选项部分来设置要传递的参数。 。
答案 1 :(得分:0)
您必须检查实际提供的命令行参数的数量:
using System;
using System.Collections.Generic;
using System.Text;
namespace command
{
class Program
{
static void Main(string[] args) {
if (args.Length > 0)
Console.WriteLine("First Name is " + args[0]);
if (args.Length > 1)
Console.WriteLine("Last Name is " + args[1]);
Console.ReadLine();
}
}
}
e.g。
# No parameters
c:\MyProgram.exe
# One parameter
c:\MyProgram.exe FirstNameOnly
# Two parameters
c:\MyProgram.exe FirstName LastName
答案 2 :(得分:0)
这依赖于你传递至少两个参数的想法,但你没有先验证它。如果您不想要输出,除非用户满足至少两个参数,那么使用try {}块,并使用对用户的响应捕获一个out of bounds数组以使用至少两个参数。
static void Main(string[] args) {
try{
Console.WriteLine("First Name is " + args[0]);
Console.WriteLine("Last Name is " + args[1]);
Console.ReadLine();
}catch (OutOfBoundsException exception){
MessageBox.Show("Insufficient input parameters");
}
你也可以使用if(args.Length == 2)来确定这是否足够而不使用try {}。
答案 3 :(得分:0)
您始终必须检查args数组的大小。 SO ...
static void Main(string[] args)
{
if ( args.Count() >= 2 )
{
Console.WriteLine("First Name is " + args[0]);
Console.WriteLine("Last Name is " + args[1]);
Console.ReadLine();
}
}
答案 4 :(得分:0)
试试这个:
static void Main(string[] args)
{
if(args.Length > 0)
{
Console.WriteLine("First Name is " + args[0]);
Console.WriteLine("Last Name is " + args[1]);
}
else
Console.WriteLine("No Command Line Arguments were passed");
Console.ReadLine();
}
并传递命令行参数,如David_001所述。