自定义方法与调用方法

方法还有个名字叫函数,有些不同于数学中的函数,这个函数可以是自定义名字,甚至自定义要实现的功能。本章就用“方法”来称呼吧。方法的声明方式是:
访问修饰符 static 返回值类型 方法名(参数)
{
  方法体
}

方法必须定义在类的里面,并与其他方法处于同一级别。访问修饰符可以不加,参数可以不加,static关键字在本次讲解中先必须加上,在之后的讲解中会解释static的作用。先来看看自定义的方法:

 

class Program
    {
        static void Main(string[] args)
        {

        }
        public static void sayChinese()
        {
            Console.WriteLine("你好 世界!");
        }
        public static void sayEnglish()
        {
            Console.WriteLine("Hello World!");
        }
    }

上面代码中自定义了两个方法,sayChinese()和sayEnglish()方法。现在,要调用方法时,在主函数内只需要这么做:

class Program
    {
        static void Main(string[] args)
        {
            sayChinese();
            sayEnglish();
            Console.ReadKey();
        }
        public static void sayChinese()
        {
            Console.WriteLine("你好 世界!");
        }
        public static void sayEnglish()
        {
            Console.WriteLine("Hello World!");
        }
    }

如上面代码所示,只需要在主函数内,写上方法名就可以调用方法。运行会发现,依次输出了"你好 世界!"和"Hello World!"。在编程中经常使用方法,有C#语言自带的一些方法,也有需要自定义的方法。
方法有三个特点:

方法可以重复使用。因为方法可以重复使用,这使得方法的重用性很高。在上面的例子中,如果在主函数写上两句sayChinese();着可以执行两次sayChinese();方法内的代码。

在多人合作项目中,上层功能要调用底层方法实现某些功能,对上层功能负责人来说,底层方法如何实现的并不需要关心,只需要知道调用某个方法能实现某些功能。所以封装方法有助于对被调用者屏蔽不需要关心的事情,由专人负责专事。

方便管理和维护代码。方法的封装使得代码更加模块化,需要关心的内容也更少。也为面向对象开发打下基础。

自定义的方法需要注意几个事项:
访问修饰符:
可以不加,则默认为internal,表示这个方法只能在当前项目中访问。在同一个项目中,internal和public权限一样。
public:公开的公共的,在任何地方都可以访问到。
private:私有的,只有在当前类中访问。
protected:受保护的,只能在当前类的内部以及该类的子类中访问。
protected internal:实际上功能就是protected+internal的作用。
加与不加static的区别:
加了static的方法叫静态方法,静态方法的调用就是普通的“类名.方法名”,用类名点出方法名就可以了。如果要调用的方法就在同一个类中,甚至不需要写类名,直接用方法名就可以调用到方法。实际上我们经常使用的Console.WriteLine();就是典型的静态方法,通过Console.cs类调用的WriteLine()方法。Console.cs类也通常被称为工具类,因为这个类里面提供的方法基本就是直接调用并很直接地实现某个功能的方法。
不加static的方法叫非静态方法,非静态方法的调用需要先用类名声明对象后,再用对象调用方法。比如这个代码:

class Program
    {
        static void Main(string[] args)
        {
            Program prg = new Program();
            prg.sayEnglish();
            Console.ReadKey();
        }
        public void sayEnglish()
        {
            Console.WriteLine("Hello World!");
        }
    }

如果方法名没有加static的话,要调用此函数必须先用类名声明一个对象后,再用“类名.方法名”,也就是用类名点出方法名。
参数的问题:
在自定义方法时可以选择是否传入参数,如果要传入参数,比如下面的代码:

class Program
    {
        static void Main(string[] args)
        {
            add(12, 15);
            Console.ReadKey();
        }
        public static void add(int num1, int num2)
        {
            int num3 = num1 + num2;
            Console.WriteLine(num3);
        }
    }

相当于在方法定义了两个参数,那么在主函数调用方法时,也必须按照方法定义的参数结构按顺序填入参数。在这里,方法内部的num1接受到传入的12,num2接受到传入的15,并在方法内部进行相加操作。
返回值的问题:
自定义方法还需要注意到返回值类型,上面代码中几乎都使用的void,表示方法执行完后不带有任何值就返回,如果在返回时要带上一个值怎么做?可以把void替换成其他返回值类型,比如下面代码:

class Program
    {
        static void Main(string[] args)
        {
            int num3 = add(12, 15);
            Console.WriteLine(num3);
            Console.ReadKey();
        }
        public static int add(int num1, int num2)
        {
            int num3 = num1 + num2;
            return num3;
        }
    }

如上面代码的演示,将返回值类型定义为int类型后,就必须在方法内写上一句return用于返回一个int类型的值。在主函数位置,执行完add(12,15)后就返回了27这个值,并将这个值赋给了在主函数定义的num3变量。
注意:自定义方法的参数名可以跟主函数调用方法使用的参数名一样,实际上并没有任何影响。自定义方法的参数只拿值而已。比如代码:

class Program
    {
        static void Main(string[] args)
        {
            int num1 = 12;
            int num2 = 15;
            int num3 = add(num1, num2);
            Console.WriteLine(num3);
            Console.ReadKey();
        }
        public static int add(int num1, int num2)
        {
            int num3 = num1 + num2;
            return num3;
        }
    }

这里方法内部与方法外部的变量名虽然一样,但并没有任何关系。如果担心的话,可以自己测试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值