笔记: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();
        }


    }

你可能感兴趣的:(C#)