2013-05-09 68 views
0

我有这样的:进入抛出错误

static void Main(string[] arg) 

和:

Main("month"); 

但由于某些原因,这给出了错误:

The best overloaded method match for 'Numbers.Program.Main(string[])' has some invalid arguments

而且

Argument 1: cannot convert from 'string' to 'string[]'

我该如何解决这些问题?

+1

'字符串[] args'预计数组不是一个字符串错误信息本身就已说明 – MethodMan 2013-05-09 00:16:35

+0

@EvanTrimboli他的问题是关于一些有点不同,但有同样的错误。 – Frank 2013-05-09 00:17:34

+0

HA ..我不这么认为 – MethodMan 2013-05-09 00:18:13

回答

0

字符串是一个字符串。 String[]是一个字符串数组。

试试这个:

String[] parameters = new String[] {"month"}; 
Main(parameters); 

有关数组和声明/实例他们更多的信息,请参阅http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx

+0

也许是因为OP是初学者,您可能想要使用更有意义的变量名称来显示或建议 – MethodMan 2013-05-09 00:17:36

+0

@DJ KRAZE我没有足够的上下文来给出有意义的变量名称,但我会尝试。 – Patashu 2013-05-09 00:18:28

+0

我想说的是建议不要使用变量名称,可能会得到或与保留字混淆.. perhapss arrParams或arrString你知道一个更好的命名约定 – MethodMan 2013-05-09 00:19:46

3

其他答案是正确的(编译器不会让您将字符串作为参数传递给期望字符串数组的方法),但另一种方法是更改​​方法的方法签名,如下所示:

static void Main(params string[] arg) 

params keyword允许参数分别传递而不是数组。因此,下面的调用是等价的:

Main("month"); 
Main(new string[] {"month"}); 

顺便说一句 - 虽然它是合法的,它不是来自你自己的程序共同调用Main方法(你的程序的入口点)。根据您的要求,您可能要考虑的是只有一个字符串作为参数的新方法,如:

public static void MyMethod(string s) 
{ 
     // your code 
} 

// in your Main method 
MyMethod("month");