C#基础之十 方法的重载

前言

      现阶段,自己的视频大概快看了一半了,还有一半的路要走,调整一下状态,好好保持下去,将学习进行到底,这几天的收获也是满满的,自己将最近的知识点进行了总结,在这和大家分享一下!

共享资源

  • 一个小示例:
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("输入y/n");
            string str = IsYorN(Console.ReadLine());

            if (str == "y")
            {
                Console.WriteLine("放学");
            }
            else
            {
                Console.WriteLine("学会了没!");
            }
            Console.ReadKey();
        }
        public static string IsYorN(string yorN)
        {
            while (true)
            {
                if (yorN == "y" || yorN == "n")
                {
                    return yorN;
                }
                else
                {
                    Console.WriteLine("输入错了,请重新输入,y/n");
                    yorN = Console.ReadLine();
                }
  • 方法的重载:
    • 简介:方法名相同,但是参数不同,参数的个数不同或者类型不同,满足一个就可以(和返回值无关,和参数的类型和个数有关)
    • 示例:
namespace _03练习3
{
    class Program
    {
        static void Main(string[] args)
        {
 AddNumber(1,3);//类似于Console.WriteLine();时,鼠标放在那,出来的小框,左上角的个数,就是重载的个数

            }      
  public static int AddNumber(int num1,int num2)//类型为int,就是上边所说的两种不同类型
        {
            return num1 + num2;
        }
        public static double AddNumber(double num1,double num2)//类型为double
        {
            return num1 + num2;
        }
        public static double AddNumber(double num1,double num2,double num3)
        {
            return num1 + num2;
        }

上图代码中需要的图片如下:
这里写图片描述

  • 方法的out参数和ref参数:
 class Program
    {
        static void Main(string[] args)
        {
            int number1=10;
            int sum = AddNumber(out number1);
            Console.WriteLine(number1);
            Console.WriteLine(sum);
            Console.ReadKey();
            //如果方法的参数用了out修饰了,那么这个参数必须在方法里进行赋值,out是将方法里的值放到方法外
        }
        public static int AddNumber(out int num1)
        {
            num1 = 100;
            return num1 + 20;//最终结果是100和120,就是number1的值和sum的值
        }
  • 示例2:
namespace _14out练习
{
    class Program
    {
        static void Main(string[] args)
        {
            int num1 ;
            int num2=80;
            int numSum=Show(out num1,num2);//调用方法,如果方法里面用out修饰了,那么在方法外面也要用out修饰,如num1
            Console.WriteLine(num1);
            Console.WriteLine(num2);
            //out修饰方法的参数,在方法外面可以不给这个参数赋值,但是在方法里面必须给这个out修饰的参数赋初值(如果方法里面用out修饰了,那么在方法外面也要用out修饰)
            //参数加out,就是把方法中的参数的值传递到方法外面
        }
        public static int  Show(out int number1,int number2)
        {
            number1 = 90;//将方法中的值传递出去,num1变成90
            return number1 + 10;//最终结果,num1是90,num2是80(num2还是原来的)
        }
    }
}
  • ref传值:
class Program
    {
        static void Main(string[] args)
        {
            int number1 = 10;
            int number2 = 20;
            int sum=Show(ref number1,ref number2);//加上ref,前面的number要赋初值
            Console.WriteLine("{0},{1},{2}",number1,number2,sum);//最后结果为10,20,30
            Console.ReadKey();
            //ref用的时候,必须要给变量赋初值,(就是前边所说的),和out有区别,out可以把方法的值传出去,ref,可以把值传到方法里,也可以把值传到方法外
            }
        public static int Show(ref int num1, ref int num2)
        {
            num1 = 100;//此处可以不赋值
            num2 = 200;//此处可以不赋值
            return num1 + num2;
        }
  • 拼接字符串:
 static void Main(string[] args)
        {
            //将一个字符串数组输出为|分割的形式,比如:“小猪|小狗|小猫”,用方法实现此功能
            string[] name = { "小猪","小狗","小猫"};
            string st = JoinString(name);
            Console.WriteLine(st);
            Console.ReadKey();
        }
        public static string JoinString(string []names)
        {
            string str = "";
            for (int i=0;i<names.Length;i++)
            {
                str += names[i] + "|";
            }
            return str + names[names.Length - 1];
        }
  • out(传出)与ref(传出/传入)区别:
    • 同:都可以让某个方法有多个返回值
    • 异:①out:要在方法里面赋初值
    • ②ref:要在方法外面赋初值
    • ③ref可以将方法内的值传出去,也可以将方法外的值传进来,但是out只能将方法内的值传出去
  • 示例:
namespace _05方法练习
{
    class Program
    {
        static void Main(string[] args)
        {
            int num1;
            int num2 = 90;//ref要在方法外面赋初值,可以把方法外面的值传进来
            Add(out num1,ref num2);

        }
        public static void Add(out int num,ref int number)
        {
            num = 10;//这是out的,要在方法里面赋初值,最后将这个值扔出去
        }
    }
}

总结

      个人感觉,这一部分的内容比较纷繁复杂,有点难于理解,有的视频自己看了好几遍,仍然是理解的不是很透彻,只好一点一点的往下走,不能在一个地方不走了,不是太明白的地方,以后实践的时候,自己去强化吧,以上的内容是我对最近学习内容的一个总结,欢迎大家多多指正,同时也让我有更大的进步!!!

猜你喜欢

转载自blog.csdn.net/tigaobansongjiahuan8/article/details/80745247
今日推荐