C#中的2个参数没有编译

时间:2012-03-21 09:37:37

标签: c# overloading params

我正在尝试这样做:

public void CustomMethod(params int[] number,params string[] names)
{
...
}

如果我删除其中一个,没有问题,不知道为什么我不能这样做?

我尝试在两者的中间放置一个普通的参数。

4 个答案:

答案 0 :(得分:11)

只有最后一个参数才能有params。请参阅documentation

  

方法声明中的params关键字后不允许使用其他参数,并且方法声明中只允许使用一个params关键字。

原因是允许多个参数会产生歧义。例如,这意味着什么?

public void CustomMethod(params int[] foo, params int[] bar)
{
    ...
}

// ...

CustomMethod(1, 2);

答案 1 :(得分:3)

这根本不受支持。编译器无法知道一个参数列表何时结束而下一个参数列表何时开始。

答案 2 :(得分:0)

据我所知,你只能在构造函数中写一个params参数,它应该是构造函数的最后一个参数。

答案 3 :(得分:0)

params关键字允许您指定一个方法参数,该参数采用参数数量可变的参数。

方法声明中的params关键字后不允许使用其他参数,并且方法声明中只允许使用一个params关键字。

见这里:http://msdn.microsoft.com/en-us/library/w5zay9db(v=VS.71).aspx