C#2010  不定参数
在之前介绍的函数中,参数的数量是在编写函数时就进行了严格定义,在使用函数时,必须按照定义函数时的参数数量、顺序、数据类型进行传参。然而在处理一些特殊的数学问题时,往往需要根据使用函数时输入的参数来定义参数数量,例如,求任意个数字的平均值等。此时,就需要使用到不定参数这一概念。
不定参数是函数参数的一个重要概念,其允许在使用函数时,为函数定义任意数量的参数,并将函数的所有参数视为一个数组。这样,程序就可以通过遍历的方式检索每一个参数的值,并进行处理。定义不定参数的函数需要使用params关键字,其方法如下所示。
[Modifier] Type FunctionName(params ArrayType ArrayName)
{
  //……
}
在上面的代码中,中括号内的关键字为可选内容,Modifier关键字表示函数的修饰符;Type关键字表示函数的返回值数据类型;FunctionName关键字表示函数的名称;ArrayType表示不定参数数组的数据类型;ArrayName表示不定参数数组的名称。例如,编写一个计算多个数字平均值的函数,代码如下。
static double ave(params double[] arr)
{
    double sum = 0;writeline函数
    for (int i = 0; i < arr.Length; i++)
    {
        sum += i;
    } return sum / (arr.Length);
}
在上面的代码中,预先将一个双精度的数组作为函数的参数,然后在函数内通过累加的方式求得数组所有元素之和,最后再除以数组的长度,返回数组所有元素的平均值。在调用该函数时,可以直接将任意数量的数字作为函数的参数,代码如下。
Console.WriteLine(ave(1 , 2 , 3 , 4 , 5));//输出:3
在定义和使用不定参数的函数时,如果定义的函数包括若干普通的参数,则应把所有普通的参数放在参数序列的前面,将不定参数数组放在参数序列的末尾。例如,编写一个既可以求若干数字最大值又可以求其最小值的函数,既可以先编写一个字符串数据类型的开关进行判定,代码如下。
static double maxOrMin(string str , params double[] arr)
{
    double max = arr[0] , min = arr[0] , none = 0;
    for (int i = 0; i < arr.Length; i++)
    {
        if (arr[i] > max)
            max = arr[i];
        else if (arr[i] < min)
            min = arr[i];
    }
    switch (str){
        case "max":
            return max;
        case "min":
            return min;
        default:
            return none;
    }
}
在执行调用该函数时,可以先以max或min等字符串作为开关,定义函数计算的是哪一种值,然后再添加数字,代码如下。
Console.WriteLine(maxOrMin("max", 1, 2, 3, 4, 5, 6, 7, 8));//输出:8
Console.WriteLine(maxOrMin("min", 1, 2, 3, 4, 5, 6, 7, 8));//输出:1
不定参数的参数数组只能是一维数组。在程序设计中,不定参数是一项非常重要的功能,由于其可以根据调用函数决定参数的数量,因此可以提高程序的智能化,使一个函数可以面向更多的功能。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。