params参数,带有默认参数值

iDe*_*kie 8 c# params

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

MyMethod(string Name, int blah=0). 
Run Code Online (Sandbox Code Playgroud)

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

MyMethod(int blah=0, params string[] variableData). 
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*zek 6

你的例子是正确的:

public void TestMethod(string name = "asdasd", params int[] items)
{
}
Run Code Online (Sandbox Code Playgroud)

params 无论在此之前使用什么参数,都必须是最后的.


Jon*_*eet 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
Run Code Online (Sandbox Code Playgroud)