摘自:http://blog.csdn.net/winscar/article/details/6312790
param关键字的实质是:param是定制特性ParamArrayAttribute的缩写,该特性用于指示编译器的执行过程大概可以简化为: 编译器检测到方法调用的时候,首先调用不包含ParamArrayAttribute特性的方法,如果存在这种方法就施行调用,如果不存在才调用含有 ParamArrayAttribute特性的方法,同时应用方法中的元素来填充一个数组,同时将该数组作为参数传入调用方法。总之就是param就是提 示编译器实现对参数进行数组封装,将可变数目的控制由编译器来完成,我们可以方便的从以下示例中得到:
static void ShowAgeSum(string team,params int[] args){}
调用时候可以是如下的情况:
ShowAgeSum("TEAM",1,2,3); int[] args = new int[]{1,2,3};
ShowAgeSum("TEAM",1,2,3,4,5); …… int[] args = new int[]{1,2,3,4,5};
针对以上的情况,编译器会对后边的各数字进行数组封装。
同时有以下一些特别需要注意的部分:
1.param修饰的参数必须为一维数组,事实上通常是以集群方式来实现多个或者任意多个参数的控制,所以数组为最简单的选择;
2.param修饰的参数数组可以是任意类型的,如果需要接收任意类型的参数,只要将数组类型定为object即可;
3.param必须是参数列表的最后一个,并且只能使用一次。
4、上面 ShowAgeSum可接受为空参数,如 ShowAgeSum().