• 用C#中的params关键字实现方法形参个数可变


    个人认为,提供params关键字以实现方法形参个数可变是C#语法的一大优点。在方法形参列表中,数组类型的参数前加params关键字,通常可以在调用方法时代码更加精练。

    例如,下面代码:

    [csharp] view plaincopy
    1. class Program  
    2.     {  
    3.         static void Main(string[] args)  
    4.         {  
    5.             Console.WriteLine(Sum(1));  
    6.             Console.WriteLine(Sum(1, 2, 3));  
    7.             Console.WriteLine(Sum(1, 2, 3, 4, 5));  
    8.             Console.ReadKey();  
    9.         }  
    10.         private static int Sum(params int[] values)  
    11.         {  
    12.             int sum = 0;  
    13.             foreach (int value in values)  
    14.                 sum += value;  
    15.             return sum;  
    16.         }  
    17.     }  

     

    实现了一个Sum方法,用于接收一组整数,并返回它们的和。参数values被加上params关键字后,在调用时可以在实参列表中列举出这组整数中的每个元素,非常方便。

    关于params关键字的用法,需要注意以下几点:

    1.            params只能用于一维数组,不能用于多维数组和诸如ArrayList、List<T>等任何类似于数组的集合类型。

    2.           被加上params关键字的形参,必须是形参列表中最后一个形参,并且方法声明中只允许一个 params 关键字。

    3.           用params关键字的方法,有四种调用形式:

    第一种,列举出数组各元素:Sum(1,2,3),这也是最常用的形式;

    第二种,像没有加params关键字的数组形参那样,用数组名做实参:Sum(new int[]{1,2,3})或int n=new int[]{1,2,3};Sum(n);;

    第三种,加params关键字的参数在调用时可以省略:Sum();//返回0;这种方式有时可以少定义一个方法重载,但当明确定义了重载int Sum()时,编译器会优先调用int Sum(),而不是Sum(params int[] values)。而且省略params型参数,方法内部仍会new一个元素个数为0的数组,效率略查。

    第四种,不省略params型参数,用null代替,效率比第三种略高,因为其内部不会new这个数组。

  • 相关阅读:
    golang 简单的实现内 网 穿 透,用户访问本地服务。
    golang 创建一个简单的广播echo服务器
    golang 使用 protobuf 的教程
    golang语言中os包的学习与使用(文件,目录,进程的操作)
    【原】画流程图工具visio使用技巧汇总
    【改】IOS-百度地图API用点生成线路、导航、自定义标注 2013年11月更新
    【原】xcode5&IOS7及以下版本免证书真机调试记录
    【转】C++的拷贝构造函数深度解读,值得一看
    【转】c++中引用的全方位解读
    【转】self.myOutlet=nil、viewDidUnload、dealloc的本质剖析
  • 原文地址:https://www.cnblogs.com/rr163/p/3990876.html
Copyright © 2020-2023  润新知