将多个可选parameter passing给C#函数

有没有办法设置一个C#函数接受任何数量的参数? 例如,你可以设置一个function,以下所有的工作 –

x = AddUp(2, 3) x = AddUp(5, 7, 8, 2) x = AddUp(43, 545, 23, 656, 23, 64, 234, 44) 

使用参数数组params修饰符:

 public static int AddUp(params int[] values) { int sum = 0; foreach (int value in values) { sum += value; } return sum; } 

如果要确保至less有一个值(而不是可能为空的数组),则分别指定:

 public static int AddUp(int firstValue, params int[] values) 

(在实现firstValue sum设置为firstValue

请注意,您还应该以普通的方式检查数组引用的无效性。 在该方法中,参数是一个完美的普通数组。 调用方法时,参数数组修饰符只会有所不同。 基本上编译器变成:

 int x = AddUp(4, 5, 6); 

变成类似于:

 int[] tmp = new int[] { 4, 5, 6 }; int x = AddUp(tmp); 

可以用一个完全正常的数组调用它 – 所以后者的语法在源代码中也是有效的。

C#4.0还支持可选参数,在其他一些情况下可能会有用。 看到这篇文章。