参数数组(params)的用法

使用参数数组的注意事项:
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

 

posted @ 2017-04-15 17:07  BloggerSb  阅读(11870)  评论(0编辑  收藏  举报