zoukankan      html  css  js  c++  java
  • 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         }
  • 相关阅读:
    Python字符串的encode与decode
    python数据操作方法封装
    python的继承
    python常用模块
    python导入模块和包的使用
    python实现curl功能
    [转]Java反射机制详解
    kafka入门
    [转]Servlet的学习之Filter过滤器技术
    [转]Java泛型
  • 原文地址:https://www.cnblogs.com/CeasarH/p/9165745.html
Copyright © 2011-2022 走看看