8.6.4 参数数组——关键字:params

这里引入一个崭新的参数类型:参数数组,它的关键字是params。知识的积累往往从类比开始。这里的参数数组有点类似于前面讲的可选参数,但也有很大的不同。相比之下,参数数组更加灵活,具体先来看一个示例,如代码清单8-14所示:

代码清单8-14 参数数组


1 using System;

2 public class MethodSample

3{

4 public static void Main()

5{

6 MethodSample ms=new MethodSample();

7 ms.DoSomething("a");//参数数组本身可选,这里没传一个值

8 ms.DoSomething("b",1);//传一个值,类型要和定义一致

9 ms.DoSomething("c",1,2);//传两个值

10 int[]array={1,2,3,4};

11 ms.DoSomething("d",array);//还可以传一个数组

12}

13//参数声明的划线部分为参数数组声明方式

14 public void DoSomething(string str,params int[]values)

15{

16 if(null!=values&&values.Length>0)

17{

18 for(int i=0;i<values.Length;i++)

19{

20 Console.WriteLine("{0},{1}",str,values[i]);

21}

22}

23 else

24{

25 Console.WriteLine(str);

26}

27}

28}


如代码清单8-14所示,从第14行可以看出,参数数组的定义以params关键字开始,指明数组类型(这里是int型),然后是参数名称;然而,第7、8、9、11行对带有参数数组的方法的调用却显示出和前面的引用参数、输出参数很大的不同:调用方法的实参前没有带相应的关键字。这里我们对比一下前面学到的各种参数类型,它们的声明和调用方式见表8-5。

8.6.4 参数数组——关键字:params - 图1