params参数,带有默认参数值

时间:2013-02-28 06:51:24

标签: c# params

我看到params参数的次数比我说的多,并且在不考虑它的意义的情况下总是删除它。现在我已经了解了它的目的。我刚学到的是params参数必须是参数列表中的最后一个。但这是我了解指定默认值的参数。示例:

MyMethod(string Name, int blah=0). 

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

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

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

2 个答案:

答案 0 :(得分:5)

你的例子是正确的:

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

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

答案 1 :(得分:4)

是的,params在这里是一个特殊情况 - 它们是唯一一种情况,其中没有默认值的参数可以在一个之后带有 a默认值。

但是,您无法调用该方法并利用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