使用不确定数目的参数(C# 与 Java)
更新:2007 年 11 月
C# 允许您在声明某个方法时通过指定 params 关键字来向此方法发送数目不确定的参数。变量列表也可包含常规参数,但请注意:使用 params 关键字声明的参数必须放在最后。它采取长度可变的数组形式,并且每个方法只能有一个 params 参数。
当编译器试图解析某个方法调用时,它会查找参数列表与所调用的方法相匹配的那个方法。如果无法找到与参数 (Argument) 列表相匹配的方法重载,但有一个具有相应类型的 params 参数 (Parameter) 的匹配版本,则将调用此方法,将其他参数 (Argument) 放入一个数组中。
下面的示例说明了这一点:
class TestParams
{
private static void Average(string title, params int[] values)
{
int sum = 0;
System.Console.Write("Average of {0} (", title);
for (int i = 0; i < values.Length; i++)
{
sum += values[i];
System.Console.Write(values[i] + ", ");
}
System.Console.WriteLine("): {0}", (float)sum/values.Length);
}
static void Main()
{
Average ("List One", 5, 10, 15);
Average ("List Two", 5, 10, 15, 20, 25, 30);
}
}
以上示例中,方法 Average 是使用类型为整型数组的 params 参数声明的,这样您便可以用任意数目的变量来调用此方法。输出结果如下:
Average of List One (5, 10, 15, ): 10
Average of List Two (5, 10, 15, 20, 25, 30, ): 17.5
如果要允许使用不确定的不同类型的参数,可以指定 Object 类型的 params 参数。