• 章节:156
  • 访问:1084
  • 时长:00:08:10
  • 日期:2016-10-08 02:04

前面我们也说道了,在函数调用的时候,会根据参数类型,个数,函数名称这些条件去匹配出要调用的函数,如果找不到则会报错的,那意思就是说,我们可以根据参数个数和类型来定义多个同名的函数

前面我们计算数组的最大值的函数MaxValue(); 这个函数只能处理int数组,如果我们要计算double数组呢?

或者你会想到,定义不同的函数名,比如IntArrayMaxValue(int[] array) 和DoubleArrayMaxValue(double[] array)

但其实可以这样定义的


static double MaxValue(double[] array){}


1 函数名相同 2参数类型不同 3个数一样 4返回值类型不同

以上四点 第四点不作为区别两个同名函数的条件  只有2 3点作为判断

所以


static double MaxValue(int[] array.bool isOdd){}


这里添加了一个参数isOdd 这个也算是另外一个函数

这样上面的这些同名函数都被称为“重载函数

注:函数的返回这不作为区别的条件,所以不能说返回类型不同就是不同的函数

定义了上面三个函数后,调用函数的时候,就可以根据传入的参数类型和个数拍判断使用哪一个函数了

参数带ref 和不带ref也算是不同的函数

比如ShowDouble(ref int val) 和ShowDouble(int val)

namespace Demo40
{    //函数重载 www.bamn.cn 北盟网校    class Program
    {        static void Main(string[] args)
        {
        }        static int GetMax(int[] array)
        {            return 1;   
        }        static double GetMax(double[] array)//类型不一样        {            return 1;
        }        static double GetMax(double[] array,bool isDouble)//个数不一样        {            return 1;
        }        static double GetMax(float[] array, bool isDouble)//类型和个数不一样        {            return 1;
        }        static int GetMax(ref int[] array)//不带和带ref 也可以算是不同的函数        {            return 1;
        }

    }
}