我在以下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);
}
}
答案 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?
转到项目属性并在“命令行参数”文本框的“调试”选项卡下指定命令行参数,如下图所示。
以上内容会为参数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