笔记:C#_可变长参数_Params

使用场景
函数传参:在遇到 函数传入的参数个数 无法确定时,需要灵活控制传入参数个数时,使用在参数前加上params。

params 用于参数的数量可变的情况下,即参数的个数是未知数。

比较
定长参数:不灵活,如果有两个形参,只能传2个实参。
变长参数:灵活,有3个传3个,有10个传10个。

定长的做法:

List<int> l = new ArrayList<>();
l.add(1);
l.add(2);
l.add(3);

不定长的做法:

listOf(1,2,3);

使用params 需要知道以下4点:
主要看前两点(基本的&常用的)

1、作用的对象:params只能修饰一维数组

public int Sum(params int[] ps)
{
	private int sum=0;//私有成员:sum
	
	//遍历数组ps中的每个元素p:进行加和操作
	foreach(int p in ps)
	{
		sum = sum + i;//可简写sum+=i;
	}
	return sum;//返回输出结果
}

2、位置:params永远放在最后一个位置

memo:若函数传递了多个参数,Params标记的参数数组必须放最后

public void func(int i,params int[] ps)//正确
public void func(params int[] ps,int i)//错误:params没放最后

3、组合:params不可与ref、out并存

4、限定:实参必须与形参同类型

memo:可以是一个数组,也可以是任意多个同类型变量。

int[] ar0 = new int[3]{1,2,3};
int[] ar1 = new int[3]{4,5,6};
public int mySum0 = Sum(ar0);//正确
public int mySum1 = Sum(ar1);//正确
public int mySum2 = Sum(1,3,5);//正确

public int mySum3 = Sum(ar0,ar1);//错误:只能传一个数组
public int mySum4 = Sum(1,3,"hello");//错误:hello不是int类型

具体实例:复制代码测试一下输出,实践是最好的学习!

class MyObj
    {
    	//定义一个静态方法:求和
		public int Sum(params int[] ps)
		{
			private int sum=0;//私有成员:sum
			
			//遍历数组ps中的每个元素p:进行加和操作
			foreach(int p in ps)
			{
				sum = sum + i;//可简写sum+=i;
			}
			return sum;//返回输出结果
		}
        //定义主函数:调用求和方法
        static void Main(string[] args)
        {
            //可变参数:任意数量同类型参数
            int mySum0 = Sum(1,2,3);
            int mySum1 = Sum(4,5,6,7,8);
            
            Console.WriteLine(mySum0);
            Console.WriteLine(mySum1);
            
            //实参可以是数组名
            int[] ar0 = new int[3] {1,2,3};
            int mySum2 = Sum(ar0);
            Console.WriteLine(mySum2);

            Console.Read();
        }


    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值