个人认为,提供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<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这个数组。
本文向大家介绍C#中实现可变参数实例,包括了C#中实现可变参数实例的使用技巧和注意事项,需要的朋友参考一下 C语言的printf函数,参数的数量可以是可变的。使用 va_start 和 va_end 实现。 C++中,实现参数可变,可以用 overload。如果参数数量不是很多的话,可以一个参数实现一个函数,两个参数再实现一个函数,三个参数再实现一个函数... 或者使用C的方案。 C#中,也可以
本文向大家介绍详解C#中三个关键字params,Ref,out,包括了详解C#中三个关键字params,Ref,out的使用技巧和注意事项,需要的朋友参考一下 关于这三个关键字之前可以研究一下原本的一些操作 观察运行结果发现 值并没有被改变,也就是说此时的操作的原理可能也是跟以前C语言的函数操作是一样的 本文主要讨论params关键字,ref关键字,out关键字。 1)params关键字,官方
问题内容: 解决以下问题 的最有效方法 是什么?从交互式外壳程序: 目前,我正在解决以下问题: 但是看起来很笨拙… (python 2.7+或3.2+解决方案都可以) 问题答案: 使用关键字参数解包:
本文向大家介绍python函数参数(必须参数、可变参数、关键字参数),包括了python函数参数(必须参数、可变参数、关键字参数)的使用技巧和注意事项,需要的朋友参考一下 ps:下面给大家介绍下python中函数、方法、关键字的区别 一、关键字 二、函 数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。可以自己定义一个函数。 --函数-封装了独立功能,可以直接调用
问题内容: 我经常遇到如下所示的方法: 如果在未传递最终参数的情况下调用此方法会发生什么。例如,可以将稍后更改的Object1(因此未声明为final)传递给此方法 问题答案: Java总是在将参数发送给方法之前先对其进行复制。这意味着最终的调用代码没有任何区别。这仅意味着无法在方法内部重新分配变量。(请注意,如果你有最终对象,则仍然可以更改对象的属性)。
本文向大家介绍destoon实现调用热门关键字的方法,包括了destoon实现调用热门关键字的方法的使用技巧和注意事项,需要的朋友参考一下 本文所述的destoon调用热门关键字的方法是根据数据库里面的保存的搜索的关键字来显示的。 每个模块下面都有各自的关键字 下面是调用的标签: 注意:此处的pagesize=9是调用的关键字的显示的条数,你可以根据自己的需要自行修改 template=index