Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 索引超出了数组的界限_C# - Fatal编程技术网

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 Bychenko
if(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();
}