C#方案

时间:2013-02-18 11:39:31

标签: c# .net arguments

我在以下C#程序中遇到问题。代码时没有错误,但是当我调试它时,会发出索引超出数组范围的异常。

这里有什么问题?

using System;
class secmain
{
    public static void squarearg(int i)
    {
        int m=i*i;
        Console.WriteLine("The Square of the argument is {0}",m);
    }
    static void Main(String[] param)
    {
     Console.WriteLine("this program will convert your string argument to int and display the square of the numbe");
     int k = Int32.Parse(param[0]);
      squarearg(k);
      }
}

5 个答案:

答案 0 :(得分:9)

好好调试它(通常)不会得到param中的command line parameter,这就是你获得异常的原因。

您需要从命令行运行其可执行文件并从那里传递参数,类似于您的dos提示符,(cmd)

C:\yourProjectPath\bin\debug> yourExecutable.exe 2

(在上面2中是您将param[0]作为字符串获得的命令行参数

或者您可以使用Console.ReadLine从控制台获取值,然后处理该值而不是命令行参数。

如果要在调试过程中传递参数,请检查以下问题:How do I start a program with arguments when debugging?

转到项目属性并在“命令行参数”文本框的“调试”选项卡下指定命令行参数,如下图所示。

enter image description here

以上内容会为参数4

提供结果2

答案 1 :(得分:4)

如果单击项目属性,则在“调试”部分下,在“构建”下方,可以传入参数。

看起来像这样:

/client:"Someclient.exe" 1 2 3

这意味着主要参数param不会为空,即param.Count > 0

答案 2 :(得分:1)

这是因为这句话 int k = Int32.Parse(param[0]);您在运行时期间没有传递任何值。而您正在尝试使用command-line argument的价值 这将指导您如何传递command line argument in C#

以这种方式运行程序

myfile.exe 125

答案 3 :(得分:1)

使用param时,它会在命令行中给出。尝试使用“secmain.exe 4”之类的东西运行它。 或者您可以转到Project Properties->Debug-> Start Options->Command line arguments并在那里输入值。

答案 4 :(得分:1)

int k = Int32.Parse(param[0]);

我认为错误存在。您没有将任何参数传递给程序。

你可以检查一下:

if (param.Length == 0)
{
   Console.WriteLine("No arguments have been passed into the program");
}

http://msdn.microsoft.com/en-us/library/aa664432(v=vs.71).aspx