使用参数数组的注意事项:
1. 只能在一维数组上使用params关键字。
2. 不能重载一个只基于params关键字的方法。params关键字不构成方法的签名的一部分。
如:
//编译时错误:重复访问
public static int Min(int [] paramList)
.............
public static int Min(params int [] paramList)
.............
3. 不允许ref或out params数组
//编译时错误
public static int Min(ref params int [] paramList)
.............
public static int Min(out params int [] paramList)
.............
4. params 数组必须是方法的最后一个参数(也就是只能有一个params数组参数)
public static int Min(params int [] paramList,int i)
.............
5. 编译器会检查并拒绝任何可能有歧义的重载
6. 非params方法总是优先于一个params方法。也就是说,如果愿意,仍然可以为普通情况创建一个方法的重载版本,
如: public static int Min(int leftHandSide,int rightHandSide) 优于: public static int Min(params int [] paramList) using System; public class MyClass { public static void UseParams(params int[] list) { for (int i = 0; i < list.Length; i++) { Console.WriteLine(list[i]); } Console.WriteLine(); } public static void UseParams2(params object[] list) { for (int i = 0; i < list.Length; i++) { Console.WriteLine(list[i]); } Console.WriteLine(); } static void Main() { UseParams(1, 2, 3); UseParams2(1, 'a', "test"); An array of objects can also be passed, as long as the array type matches the method being called. int[] myarray = new int[3] { 10, 11, 12 }; UseParams(myarray); } } 程序的输出结果如下: 1 2 3 1 a test 10 11 12
时间: 2024-10-25 12:03:59