索引超出了数组的范围

时间:2016-09-30 20:34:55

标签: c#

这是我的错误程序:

  

索引超出了数组

的范围

代码:

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

5 个答案:

答案 0 :(得分:1)

问题是您没有将任何参数传递给您的程序。您可以通过从命令行运行程序来执行此操作,或者如果您通过Visual Studio运行该程序,则可以通过转到项目属性,选择“调试”选项卡并将其输入“开始”选项部分来设置要传递的参数。 。

Visual Studio Project Properties

答案 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所述。