C#参数

示例

params 允许方法参数接收可变数量的参数,即零,该参数允许一个或多个参数。

static int AddAll(params int[] numbers)
{
    int total = 0;
    foreach (int number in numbers)
    {
        total += number;
    }
    
    return total;
}

现在可以使用典型的int参数列表或整数数组调用此方法。

AddAll(5, 10, 15, 20);                // 50
AddAll(new int[] { 5, 10, 15, 20 });  // 50

params必须最多出现一次,并且如果使用,它必须位于参数列表的最后,即使随后的类型与数组的类型不同。


使用params关键字重载函数时要小心。C#倾向于在尝试使用重载之前匹配更具体的重载params。例如,如果您有两种方法:

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)