C#参数数组

参数数组

重载是指在同一作用域中声明两个或更多同名方法,比如Console.WriteLine
C#参数数组_第1张图片
重载很有用,但是如果发生变化的不是参数类型,而是参数的数量,怎么办?.假如要向控制台写入许多值,那么该怎么办?是不是要提供Console.WriteLine的更多版本?,让每个版本都获取不同数量的参数?那太麻烦了.

有一种技术允许只写一个方法就能接受数量可变的参数。这种技术就是参数数组.

使用参数数组
声明参数数组

参数数组允许将数量可变的实参传给方法,为了定义参数数组,要用params关键字修饰数组参数.
比如声明一个方法要求实参中的最小值

        public static int Min(params int[] paramlist)
        {
            if(paramlist.Length != 0)
            {
                int currentMin = paramlist[0];
                foreach(int i in paramlist)
                {
                    if (i < currentMin)
                    {
                        currentMin = i;
                    }
                }
                return currentMin;
            }
            else
            {
                throw new ArgumentException("not enough arguments");
            }
        }

如果要求四个个整数值中哪个最小,可以这样写:
C#参数数组_第2张图片
在调用Min方法时传递任意数量的int实参,编译器每次都会统计int实参数量,并创建这个大小的int数组,在数组中填充实参,最后调用方法,将单独的一个数组参数传给它.

使用参数数组需要注意:
1.只能为一维数组使用params关键字
2.不能只依赖params关键字来重载方法.

public static int Min(int[] paramList)
..
..
public static int Min(params int[] paramList)

这两个不构成重载,是重复的声明

3.参数数组不允许使用ref或out修饰符
4.params数组必须是方法最后一个参数.
5.非params方法总是优于params方法

public static int Min(int leftHandSide, int rightHandSide)
..
..
public static int Min(params int[] paramList)

当参数为二时,优先调用第一个版本.

你可能感兴趣的:(C#,C#,参数数组)