当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-11-04

    本文导语:  个人认为,提供params关键字以实现方法形参个数可变是C#语法的一大优点。在方法形参列表中,数组类型的参数前加params关键字,通常可以在调用方法时代码更加精练。 例如,下面代码: class Program { static void Main(string[] ar...

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

例如,下面代码:

class Program 
{ 
static void Main(string[] args) 
{ 
Console.WriteLine(Sum(1)); 
Console.WriteLine(Sum(1, 2, 3)); 
Console.WriteLine(Sum(1, 2, 3, 4, 5)); 
Console.ReadKey(); 
} 
private static int Sum(params int[] values) 
{ 
int sum = 0; 
foreach (int value in values) 
sum += value; 
return sum; 
} 
}

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

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

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

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这个数组。


    
 
 
 
本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.169IT.COM)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing.text.html.parser类dtd的类成员方法: param定义及介绍
  • 解析web.xml中在Servlet中获取context-param和init-param内的参数
  • java命名空间javax.swing.text.html类html.tag的类成员方法: param定义及介绍
  • alsa driver的params_periods是何用途呢?
  • java命名空间javax.sql.rowset类baserowset的类成员方法: ascii_stream_param定义及介绍
  • if [[ ! $param_line =~ ^%%$ ]]; then
  • java命名空间javax.sql.rowset类baserowset的类成员方法: binary_stream_param定义及介绍
  • jsp ${param.id}用法
  • java命名空间javax.sql.rowset类baserowset的类成员方法: unicode_stream_param定义及介绍
  • struct sched_param 的sched_priority 范围是多少?
  • HTML <param> 标签
  • "<jsp:param name="tableOptions" value="border=4"/>",这样写有没有错???
  • 基于jsp:included的使用与jsp:param乱码的解决方法
  • 急!请高手指教! 我的applet从html里取得的PARAM可以用于显示,可为什么用作判断条件却不起效果??
  • JQuery中serialize()、serializeArray()和param()方法示例介绍
  • 基于params,ref,out的参数问题详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号