C# 索引超出了数组的界限
这是我的程序,有错误: 索引超出了数组的界限 代码:C# 索引超出了数组的界限,c#,C#,这是我的程序,有错误: 索引超出了数组的界限 代码: 您必须检查实际提供了多少个命令行参数: e、 g 问题是您没有向程序传递任何参数。您可以通过从命令行运行程序来实现这一点,或者如果您是通过Visual Studio运行此程序,则可以通过转到项目属性、选择“调试”选项卡并将其输入到“开始选项”部分来设置要传递的参数 这取决于您至少传递了两个参数,但您没有首先验证这一点。如果您不希望输出,除非用户满足至少两个参数,那么请使用try{}块,捕获一个越界数组,并响应用户使用至少两个参数 sta
您必须检查实际提供了多少个命令行参数: e、 g
问题是您没有向程序传递任何参数。您可以通过从命令行运行程序来实现这一点,或者如果您是通过Visual Studio运行此程序,则可以通过转到项目属性、选择“调试”选项卡并将其输入到“开始选项”部分来设置要传递的参数
这取决于您至少传递了两个参数,但您没有首先验证这一点。如果您不希望输出,除非用户满足至少两个参数,那么请使用try{}块,捕获一个越界数组,并响应用户使用至少两个参数
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{}。您必须始终检查args数组的大小。 所以 试试这个:
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();
}
并传递命令行参数,如所述。您输入的是什么?在您尝试检索args之前,应该检查args在这些索引中是否确实包含数据。您是否使用2个输入调用该程序?与“program.exe john doe”类似,以下代码不运行;刚刚抛出错误“索引超出范围数组”首先,您提供了参数吗?@DION:请确保运行修改(重建)的版本。在哪一行抛出异常?Console.WriteLine(“名字是”+args[0])@德米特里Bychenko@DION:我无法用我的代码重现错误行为。因此您必须调试:检查是否未执行隐藏错误,例如
if(args.Length>0)代码>-破坏乐趣的分号。在if(args.Length>0)上放置断点
检查args
array@DION-提供的代码是完整的。你是如何测试代码的?您正在按F5运行程序吗?如何执行程序?没有隐藏error@DmitryBychenko仍然在行控制台中抛出错误<代码>参数.计数
不编译args.Length
或args.Count()
对于LinqCorrectamundo Dmitry,我省略了参数。固定的谢谢谁能给我解释一下这句话:x[i]=(char)(x[i]+3)@Dmitry Bychenkoif(args.Length>1)
;否则,您将在myProg.exe JustFirstName
命令上引发异常line@DmitryBychenko如果(args.Length>0)这个条件不满足吗?既然你已经把“姓氏是”+args[1]
(请注意,1
),你必须写如果(args.Length>1)
,以确保args[1]
存在。@DmitryBychenko是的!这是一个精确的检查…:)
# No parameters
c:\MyProgram.exe
# One parameter
c:\MyProgram.exe FirstNameOnly
# Two parameters
c:\MyProgram.exe FirstName LastName
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");
}
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();
}
}
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();
}