我看到params
参数的次数比我说的多,并且在不考虑它的意义的情况下总是删除它。现在我已经了解了它的目的。我刚学到的是params
参数必须是参数列表中的最后一个。但这是我了解指定默认值的参数。示例:
MyMethod(string Name, int blah=0).
所以问题是如果我需要在需要使用params
时指定上面的默认值,可以这样做吗?如果是这样,必须在最后宣布?示例:
MyMethod(int blah=0, params string[] variableData).
再次感谢您的帮助。詹姆斯
答案 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