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。