【C#视频】方法重载、函数重载、传值

目录

重载

函数重载

ref传值


重载

重载,简单的来说就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

重载的定义

函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同

重载是可使函数、运算符等处理不同类型数据或接受不同个数的参数的一种方法

方法重载

是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数

具体规范

  • 方法名一定要相同
  • 方法的参数表必须不同,包括参数的类型或个数,以此分区不同的方法体
    • 如果参数个数不同,就不管它的参数类型了
    • 如果参数个数相同,那么参数的类型必须不同
  • 方法的返回类型、修饰符可以相同,也可以不同

举例

        static void Main(string[]args)
        {
            AddNumber(1, 2);
            //只打半个括号,可以看到,总共显示3个方法,
            //依据每一个方法里的变量类型不同,输入
          
        }
        //返回值类型为int,参数的个数为2,参数类型都为int类型
        public static int AddNumber(int num1,int num2)
        {
            return num1 + num2;
        }

        //返回值类型为double,参数的个数为2,参数类型都为double类型
        public static double AddNumber(double num1, double num2)
        {
            return num1 + num2;
        }

        //返回值类型为double,参数的个数为2,参数类型为double类型和int类型
        public static double AddNumber(double num1, int num2)
        {
            return num1 + num2;
        }

 返回一个数组

		static void Main(string[] args)
        {
            //方法 求和 最大值 最小值

            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//定义nums数组并赋值
            int[] arrayNumbers = ArraySumAndMaxOrMin(nums);//调用ArraySumAndMaxOrMin的方法

            Console.WriteLine("最大值为{0}",arrayNumbers[0]);
            Console.WriteLine("最小值为{0}",arrayNumbers[1]);
            Console.WriteLine("和为{0}",arrayNumbers[2]);

            Console.ReadKey();
            //返回多个值,不同类型
        }
        public static int[]ArraySumAndMaxOrMin(int[] numbers)
        {
            int[] array = new int[3];//声明数组
            array[0] = int.MinValue;
            array[1] = int.MaxValue;
            array[2] = 0;

            for (int i = 0; i < numbers.Length ; i++)
            {
                if (numbers[i] > array[0])//如果数组数值小于最小值
                {
                    array[0] = numbers[i];//将数组数值赋给min变量
                }
                if (numbers[i]<array[1])//如果数组数值大于最大值
                {
                    array[1] = numbers[i];//将数组数值赋给max变量
                }
                array[2] += numbers[i];//求和

            }
            return array;
        }

函数重载

就是有多个参数不同的构造函数

具体规范

构造函数重载:是用来创建对象的特殊方法的,方法名和类型一样,没有返回值,连void都不用

  • 构造函数可以有参数,new对象的时候传递参数即可
  • 如果不指定构造函数,则类有一个默认的无参数构造函数
  • 如果指定了构造函数,则不再有默认的无参数构造函数
  • 如果需要无参数的构造函数,则需要自己来写

举例

		public Person(string name,char gender ,int age)
        {//有参数的构造函数的出现会将原来默认的无参数的构造函数干掉。
            this._name = name;
            this._age = age;
            this._gender = gender;
        }
        //如果此时此刻还想用到无参数的构造函数,那么就必须
        //构造函数的重载
        public Person()
        {
        }

 out返回值

		static void Main(string[] args)
        {
            int number1 = 10;//定义变量

            //AddNumber的参数number1所采用的值是从方法中传过来的
            int sum = AddNumber(out number1);

            //如果方法的参数用out修饰了,那么这个参数必须在方法里进行赋值
            //变量前加out,是把方法里的值,传到方法外面去了
            Console.WriteLine(number1);//所以此刻的number1的值为100
            Console.WriteLine(sum);//而返回的总和为120
            Console.ReadKey();
        }
        public static int AddNumber(out int num1)
        {
            num1 = 100;//定义变量
            return num1 + 20;//返回100+20
        }

有参数不加out,则加out的参数必须在方法里赋初值,来加out的参数可以不再方法里赋初值

		static void Main(string[]args)
        {
            int num1;//声明变量
            int num2 = 80;//给变量赋初值,num2未加out,可以不再方法里赋初值
            int numSum = Show(out num1, num2);//调用方法

            Console.WriteLine(num1);
            Console.WriteLine(num2);
            Console.ReadKey();
            //out修饰方法的参数了,在方法外面,可以不给这个参数赋值,但是在方法里面必须给这个out
            //修饰符的参数赋初值,另外,参数加out,是把这个方法中的参数的值传到方法外面去了
        }
        public static int Show(out int number1,int number2)
        {
            number1 = 90;
            return number1 + 10;
        }

ref传值

       static void Main(string[] args)
        {
            int number1 = 10;//给变量赋初值
            int number2 = 20;//给变量赋初值

            int sum = Show(ref number1, ref number2);//调用方法

            Console.WriteLine("{0},{1},{2}", number1, number2, sum);  
            Console.ReadKey();
            //ref用的时候必须要给这个变量赋初值,和out有区别,out可以把方法里的值传出去
            //ref可以把值传到方法里,又可以把值传到方法外
        }
        public static int Show(ref int num1, ref int num2)
        {
            num1 = 100;
            num2 = 200;
            return num1 + num2;
        }

猜你喜欢

转载自blog.csdn.net/weixin_45490023/article/details/118783892
今日推荐