9

我看到这个params参数的次数比我能说的要多,并且总是在不考虑它的含义的情况下删除它。现在我知道了它的用途。我刚刚学到的是params参数必须是参数列表中的最后一个。但这是我对指定默认值的参数的了解。例子:

MyMethod(string Name, int blah=0). 

所以问题是如果我需要在需要使用的同时指定上面的默认值params,可以这样做吗?如果是这样,哪个必须最后声明?例子:

MyMethod(int blah=0, params string[] variableData). 

再次感谢您的帮助。詹姆士

4

2 回答 2

7

你的例子是正确的:

public void TestMethod(string name = "asdasd", params int[] items)
{
}

params必须是最后一个,无论在此之前使用什么参数。

于 2013-02-28T06:54:29.757 回答
5

是的,params这是一种特殊情况——它们是唯一没有默认值的参数可以出现在有默认值参数之后的情况。

但是,您不能在不指定可选参数的情况下调用该方法并利用params事物的另一面(对于非空数组):

MyMethod(5, "x", "y");                            // Fine, no defaulting
MyMethod(variableData: new string[] { "x", "y"}); // Default for blah
MyMethod();                                       // Default for blah, empty variableData
MyMethod(new string[] { "x, "y" });               // Invalid   
MyMethod("x", "y");                               // Invalid
于 2013-02-28T06:59:39.063 回答