C#_基础_关键字可变参数Param(十三)

1.修饰必须是一维数组

1    public static void Test(params int a)
2         {
3             a = 10;
4         } 
5 //运行报错:


2.可变参数要放到最后一个,所以一个方法中只能有一个

 


3.不能依赖重载方法


4.不允许parmas数组指定 ref 或者 out


5.非parm方法总是优先param方法如 sum(parms int【】arr) 和重载 sum()

 1   static void Main(string[] args)
 2         {
 3             //调用的是由param方法
 4           int num =   Sum(2, 3);
 5           Console.WriteLine(num);
 6 
 7           //方法重载,优先调用没有params方法
 8           num = Sum(2);
 9           Console.WriteLine(num);
10           Console.ReadKey();
11         }
12 
13         static int  Sum(int a,params int [] arr){
14 
15             int result = a;
16             for (int i = 0; i < arr.Length; i++)
17             {
18                 result += arr[i];
19             }
20             Console.WriteLine("有param方法");
21             return result;
22         }
23         static int  Sum(int a)
24         {
25             Console.WriteLine("没有params方法");
26             return a;
27         }


6.parms即使没有传入参数,方法内部仍会new一个元素个数为0的数组,效率略差

 1         static void Main(string[] args)
 2         {
 3           //调用的是由param方法,params对应的输入0个参数
 4          int num = Sum(2);
 5           Console.WriteLine(num);
 6           Console.ReadKey();
 7         }
 8 
 9         static int  Sum(int a,params int [] arr){
10 
11             int result = a;
12             for (int i = 0; i < arr.Length; i++)
13             {
14                 result += arr[i];
15             }
16 
17             //输出结果0,那么说明调用方法的时候new了一个以为数组arr,长度为0
18             Console.WriteLine(arr.Length);  
19             return result;
20         }


7.数组可以是任意类型,如果要接收任意类型的参数,只要数组类型定位object即可
   存入的是Object类型,会拆箱装箱

例题:

 1   //求任意长度数组的最大值,整数类型
 2         static int GetMax(params int[] arr)
 3         {
 4             if (arr.Length <0)
 5             {
 6                 return -1;
 7             }
 8             int max = arr[0];
 9             for (int i = 1; i < arr.Length; i++)
10             {
11                 if (max < arr[i])
12                 {
13                     int temp = max;
14                     max = arr[i];
15                     arr[i] = temp;
16                 }
17 
18             }
19             return max;
20         
21         }

猜你喜欢

转载自www.cnblogs.com/CeasarH/p/9165745.html
今日推荐