PARAMS
params
允许方法参数接收可变数量的参数,即允许该参数为零,一个或多个参数。
static int AddAll(params int[] numbers)
{
int total = 0;
foreach (int number in numbers)
{
total += number;
}
return total;
}
现在可以使用典型的 int
参数列表或 int 数组来调用此方法。
AddAll(5, 10, 15, 20); // 50
AddAll(new int[] { 5, 10, 15, 20 }); // 50
params
必须最多出现一次,如果使用,它必须在参数列表中的最后一个,即使后续类型与数组的类型不同。
使用 params
关键字时重载函数时要小心。在尝试使用 params
重载之前,C#更喜欢匹配更具体的重载。例如,如果你有两种方法:
static double Add(params double[] numbers)
{
Console.WriteLine("Add with array of doubles");
double total = 0.0;
foreach (double number in numbers)
{
total += number;
}
return total;
}
static int Add(int a, int b)
{
Console.WriteLine("Add with 2 ints");
return a + b;
}
然后在尝试 params
重载之前,特定的 2 参数重载将优先。
Add(2, 3); //prints "Add with 2 ints"
Add(2, 3.0); //prints "Add with array of doubles" (doubles are not ints)
Add(2, 3, 4); //prints "Add with array of doubles" (no 3 argument overload)