函数重载是个什么概念,才接触的这个概念的时候我也是完全昏了,还在自己看看了书后就理解了。那什么是函数重载呢?我个人理解的是在同一个作用域下有多个同名的函数,但是他们的形参的类型是不同的,或者参数个数是不同的。当我们调用这些函数时,怎么判断我们调用的是那一个函数呢,这个就要看你在使用重载函数时所传参数的类型或者参数个数。好了,话不说。看看代码就知道了。

using System;
namespace overload
{
    class a
    {
        public void print()
        {
            Console.WriteLine("无参,无返回值的print");
        }
        public void print(int i)
        {
            Console.WriteLine("这个是有参有返回值的print");   
        }
        public void print(double i)
        {
            Console.WriteLine("这个是同参数个数,但是不同参数类型的print");
        }
        public void print(int i, int j)
        {
            Console.WriteLine("这个是参数同类型,但是不同个数的print");
        }
        public void print(double i, double j)
        {
            Console.WriteLine("这个是不同参数类型,不同参数个数的print");
        }
        //还可以写更多的重载print,我只是写了几个特别的,体现出函数重载的特性就好。
        //这里都是的是无返回值的函数重载,有返回值的函数重载也是一样的。当然不能通过是否有返回值来函数重载。
        //函数重载的要点是:相同函数名,不同形参类型,或者不同形参个数就好。。
    }
    class b
    {
        static void Main()
        {
            a temp = new a();
            temp.print();
            temp.print(1);
            temp.print(1.0);
            temp.print(1,2);
            temp.print(1.0,2.0);
            Console.ReadKey();
            
        }
    }
}

个人理解函数重载的作用:函数重载是可以减少我们对函数名的记忆工作。比如在C语言中我们定义一个输出函数print,如果我们输出不同类型的数据时。就要这样定义,print_int,print_str,print_double。因为在C语言中没有函数重载这个概念。C语言判断一个函数就只看函数名。所以对于输出不同类型的数据我们就只有定义不同的函数。但是在C#有了函数重载后。我们输出不同类型的数据就不用这样麻烦了。使用相同的函数不同数据类型,或者不同的形参个数就可以控制任意不同类型的数据的输出。