【C#】方法的简单介绍

举报
Laura_张 发表于 2022/08/27 00:56:03 2022/08/27
【摘要】 文章目录 方法介绍方法有无参数和返回值局部变量和传参方法的重载out传值和ref传值方法总结 ——————————————————————————————————————————————...

——————————————————————————————————————————————

方法介绍

函数是将一堆代码进行重用的一种机制,有了方法就便于写代码。

方法的定义(有static就是静态方法)
命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义。
方法的调用:对于静态方法,调用有两种方法

如果在同一个类中,直接写名字调用就可以了,或者是写类名.方法名();
第二种方法就是使用program来调用。
return可以立即退出方法。

方法有无参数和返回值

 //最简单的方法无参无返回值
               string str = Console.ReadLine();
               int num = Convert.ToInt32("3");//int变量来接收返回值
               
            
                bool result = int.TryParse("3", out num);//用bool类型来接收返回值,有两个参数,一个是字符串类型,一个是out num 。
               Console.ReadLine();//此方法没有参数

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
          //方法有参数有返回值
            Console.WriteLine("请输入第一个数");
            int number1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("请输入第二个数");
            int number2 = Convert.ToInt32(Console.ReadLine());

            int max=Show(number1,number2);
            Console.WriteLine("最大值就是这个数,我自己怎么写都可以 {0}", max);
            Console.ReadKey();
           }
        /// <summary>
        /// 此方法用来比较两个数的大小,返回的是最大值
        /// </summary>
        /// <param name="num1">用户比较的第一个数</param>
        /// <param name="num2">用户比较的第二个数</param>
        /// <returns>返回的是最大值</returns>
        public static int Show(int num1, int num2)
        {
            //int number = num1 > num2 ? num1 : num2;
            return num1 > num2 ? num1 : num2;
         }           

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

局部变量和传参

变量的作用域(局部变量)
在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止。

一个方法中访问另一个方法中的变量,实现办法:
第一种方法:传参数的方法

 static void Main(string[] args)
        {
            int number = 90;
            Test(number);//通过传参数
            
        }
        //通过传参数可把一个方法的值传递到另一个方法中,进行使用。
        public static void Test(int num)
        {
            num = num + 3;
            Console.WriteLine(num);
            
        }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

第二种方法:返回值
用返回值来判断是否是闰年,判断一个年份是否是闰年,方法中有return语句,导致函数立即返回,在返回值为void的函数中return,在返回值非void的函数中return值。

  #region 写一个方法,判断一个年份是否是闰年
        //这种方法会有一些繁琐,但是分段写,这样各专其职,会比较清晰。
        static void Main(string[] args)
        {
            Console.WriteLine("请输入年份");

            string str = Console.ReadLine();

            int yearInt = Convert.ToInt32(str);//报异常

            bool result = Isyear(yearInt);//使用bool类型的值来接收返回值

            if (result)
            {
                Console.WriteLine("是闰年");
            }
            else
            {
                Console.WriteLine("是平年");

            }
            Console.ReadKey();

        }
        public static bool Isyear(int year)
        {
            //下面的函数表达式显示的是闰年的计算
            if (year%400==0||year%4==0&&year%100!=0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        #endregion 



  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
 #region 写一个方法,判断一个年份是否是闰年
        //这种方法会有一些繁琐,但是分段写,这样各专其职,会比较清晰。
        //写一个方法,传过去的是字符串,返回的是数值

        static void Main(string[] args)
        {
            Console.WriteLine("请输入年份");
            //string str = Console.ReadLine();
            //int yearInt = Convert.ToInt32(str);//报异常
            int yearInt = OutPutNumber(Console.ReadLine());
            //OutPutNumber(Console.ReadLine());
            bool result = Isyear(yearInt);//使用bool类型的值来接收返回值

            //有个方法,穿过去一个字符串,返回的是一个数字;
            if (result)
            {
                Console.WriteLine("是闰年");
            }
            else
            {
                Console.WriteLine("是平年");
            }
            Console.ReadKey();
        }
        public static bool Isyear(int year)
        {
            //下面的函数表达式显示的是闰年的计算
            if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public static int OutPutNumber(string strNumber)
        {
            while (true)
            {
                try
                {
                    int number = int.Parse(strNumber);
                    return number;
                }
                catch
                {
                    Console.WriteLine("输入错误,请重新输入");
                    strNumber = Console.ReadLine();
                }
            }
        }
 #endregion

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

方法的重载

方法的重载:参数类型不同或参数个数不同,与返回值无关。

Console.WriteLine();的参数可以是字符串类型也可以是数字类型的,还可以是布尔类型的,这就是运用了方法的重载。

 #region 方法的重载
            //计算两个数的和,第一个数是整数,第二个数是整数,这个方法的功能就是求两个数的和
            //方法的重载 方法名相同,参数不同或者是参数的个数不同,类型也不同
            //和返回值无关,和参数的类型和个数有关系
 
        }
        public static int  AddNumber(int num1,int num2)
        {
            return num1 + num2;
        }
        public static double AddNumber(double num1,double num2)
        {
            return num1 + num2;
        }
        public static double AddNumber(double num1,double num2,double num3)
        {
            return num1 + num2+num3 ;
        }
 #endregion

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

out传值和ref传值

函数参数默认是值传递,也就是复制一份。

out修饰方法的参数,那么在方法外面,可以不给这个参数赋值,但是在方法里面必须给这个out修饰符的参数赋初值。
另外,参数加out,是把这个方法中的参数的值传到方法外面去了。out一般用在函数需要多个返回值的场所。

ref 用到时候必须给变量赋初值,和out有区别,out可以把方法里面的值传出去。ref可以把值传到方法里面,又可以把值传到方法外面。

 #region  out传值

            int num1 = 10;
            int num2 = 80;
            int numSum = Show( out num1,num2);
            Console.WriteLine(num1);//结果为90
            Console.WriteLine(num2);
            //out修饰方法的参数,那么在方法外面,可以不给这个参数赋值,但是在方法里面必须给这个out修饰符的参数赋初值
            //另外,参数加out,是把这个方法中的参数的值传到方法外面去了。

            Console.ReadKey();
        }
        public static int Show(out int number1,int number2)
        {
            number1 = 90;
            return number1 + 10;
        }
 #endregion 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
#region  ref传值
            //ref 用到时候必须给变量赋初值,和out有区别,out可以把方法里面的值传出去。
            //ref可以把值传到方法里面,又可以把值传到方法外面;

            int number1 = 10;//使用ref之后,这里必须赋初值,但是使用out的时候,可以不必赋初值
            int number2 = 20;
            int sum = Show(ref number1,ref number2);
            //Console.WriteLine("{0}{1}{2}", number1, number2, sum);//结果显示102030
            Console.WriteLine("{0},{1},{2}", number1, number2, sum);//下面对num1和num2 进行重新赋值,最后的结果为100,200,300
            //使用Ref必须赋初值
            Console.ReadKey();
        }
        public static int Show(ref int num1,ref int num2)
        {
            num1 = 100;
            num2 = 200;
            return num1 + num2;
        }
 #endregion 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
 #region  ref返回多个值

            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int max = 0;
            int min;
            int sum = ArraySum(nums, out max, out min);
        }
        public static int ArraySum(int[] numbers, out int max, out int min)
        {
            max = int.MinValue;
            min = int.MaxValue;
            int sum = 0;

            for (int i = 0; i < numbers.Length; i++)
            {
                if (numbers[i] > max)
                {
                    max = numbers[i];
                }
                if (numbers[i] < min)
                {
                    min = numbers[i];
                }
                sum += numbers[i];
            }
            return sum;
#endregion

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

方法总结

      public static void show()
            //无返回值无参数
        public static int show()
            //有返回值,int类型的
        public static int show(int num)
            //有返回值,int类型的,有参数,int类型的
        public static int show(out int num)
            //有两个返回值
        public static int show(out int num,ref string str)
            //有三个返回值

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

文章来源: blog.csdn.net,作者:张艳伟_Laura,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Laura__zhang/article/details/110392389

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。