• .NET基础——方法


      这一篇,我们来学习C#中的方法——函数

    1.  方法的功能

       方法的功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,我们就可以把需要重复写的代码定义在一个方法中,用到的时候只需要调用就可以了。这样做也是对代码的封装。

      定义方法的语法:

      [访问修饰符] [static] 返回值类型 方法名([参数列表])

      { 方法体; }

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

    2.  要注意的地方

      1. 方法可以拥有一个或多个参数,或者没有任何参数。参数列表中的参数相当于方法中的局部变量。

       2. 如果方法没有返回值的话,返回值类型为void,每个方法只有一个返回值(如果要返回多个值,可以返回一个数组或者通过参数来返回);但构造方法和析构方法例外,不允许有任何返回值。

       3. 方法中只要遇到return,如果返回值为void类型则立即退出方法;如果返回值为非void类型,则会返回一个与返回值类型相同的值。如果try…cathy…finally,在try里面若遇到return,finally依然会执行。

       4. 方法的功能要单一。

    3.  方法返回多个值的例子

       a) 用数组返回多个值

        这种情况只适应于需要返回多个相同类型的值的时候;如果需要返回多个不同类型的值,这样做就不行了。

    static int[] Sum(int numA, int numB)
    {
        int sum = numA + numB;
        int sub = numA - numB;
        int[] arrRes = new int[2];
        arrRes[0] = sum;
        arrRes[1] = sub;
        return arrRes;
    }

    b)用out关键字创建输出参数,我们可以在一个方法中返回多个不同类型的值

      因为使用out修饰参数后,传递的是参数的地址,所以我们对形参进行的修改会影响到实参。

        在调用方法时候,假如实参对应的形参有被out修饰,那么在实参前面也要加上out修饰。

      如果在方法内,没有对被out修饰的参数进行赋值,则编译会报错: 离开当前方法之前必须对 out 参数赋值 ”。

                int numA = 10, numB = 7;
                int sum, sub;
                sum = Test(numA, numB, out sub);//通过参数来返值
                Console.WriteLine("sum = {0}  sub = {1}", sum, sub);
                //sum = 17  sub = 3
            
            static int Test(int a, int b,out int sub)
            {
                //在没有对sub进行赋值之前,不能使用它
                //sub += 1; 错误,使用了未赋值的 out 参数“sub”    
                //sub = 1;  正确,为sub赋值
                sub = a - b;
    
                int sum = a + b;
                return sum;
            }                    

      c) out 与 ref 的区别:

       out 只有传出的功能,在方法内必须赋值;

         ref 可以传入和传出,侧重传入,在调用方法前必须赋值,在方法内可以不赋值。

       通过ref,我们能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。

         C#通过ref这个关键字,屏蔽了C++中的指针

                int x = 2, y = 3;
                int mul = 0;
                Fun(x, y, ref mul);
                Console.WriteLine("mul = {0}", mul);
                // mul = 6    
    
                static void Fun(int x,int y, ref int mul) 
                {
                    mul = x * y;
                }            

    4.  方法中的可变参数

      Console.WriteLine(“a = {0}, b = {1}” ,  0 , 1) 中可以允许有多个参数。

      public static void WriteLine(string format, params object[] arg); 

      上面方法中的两个参数接受的值分别是:“a = {0}, b = {1}” , 一个object类型的数组 arg={0,1}

      params 的作用就是将多个参数组合成一个数组怕;如果可变参数不传的话,可变参数就是一个长度为0的数组对象。

      被params 修饰的参数必须放在方法中参数列表的最右端

            static void Main(string[] args)
            {
                int[] arrAge = { 12345567 };
                ParamesTest("刘德华", arrAge);//可变参数可以直接传递数组对象进去
                ParamesTest("刘德华"123);//可变参数也可以单个的传递值
                ParamesTest("刘德华");//可变参数可以不传,那么方法中的可变参数形参就是一个Length=0的数组对象
                Console.ReadLine();
            }
    
            static void ParamesTest(string name, params int[] ages)//可变参数必须放在方法参数列表的最后一个
            {
                Console.WriteLine("您好?~~{0}", name);
                Console.WriteLine("ages==null:" + ages == null);
                Console.WriteLine("ages.Length=" + ages.Length);
                foreach (int age in ages)
                {
                    Console.WriteLine("当前循环到的age=" + age);
                }
                Console.WriteLine();
            }

      输出:

                 

    5.  方法的重载

      一般在同一个类中,方法名相同方法的参数列表不同,才能构成方法的重载。

      注意:方法的重载与返回值没有关系。

      例如,Console.WriteLine的重载

      

        如何在编程过程中,查看一个方法有多少种重载?

      

      在输入方法名,输入左括号后,不要急着输入右括号,就会跳出这个函数的重载信息。这时按方向键中的“向上”和“向下”,就可以来查找我们需要的方法了。

  • 相关阅读:
    C# 时间戳转日期
    用robotframework框架搭建自动化测试框架示例一
    Spring MVC中静态资源处理的源码解析
    压缩sql server 数据库的空间,清理日志.ldf
    windows 玩转 nginx
    uniapp的获取token,移除token
    js获取confirm的返回值
    uniapp富文本复制文字内容
    uniapp使用richtext,对后台传入数据进行处理
    uniapp处理后台传入的html代码
  • 原文地址:https://www.cnblogs.com/lcxBlog/p/4506955.html
Copyright © 2020-2023  润新知