欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#类型成员:方法

程序员文章站 2023-10-16 10:22:38
一、方法 方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用void,有返回值时用返回值类型,参数可以是零到无限个,参数由参数类型和参数名组成。 方法又称为函数,它既可以作为一个独立的功能,又可以作为类的行为。 作为独立功能:洗衣机 作为类的行为:洗衣机 方法作为独立功能对比作为类 ......

一、方法

  方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用void,有返回值时用返回值类型,参数可以是零到无限个,参数由参数类型和参数名组成。

1 void method1() { }                      //无返回值、无参数的方法
2 void method2(int i) { }                 //无返回值、有一个参数的方法
3 int method3(bool b, string s) { }       //返回值为int、有二个参数的方法
4 class class1 { }                        //定义一个类作为参数或者返回值
5 class1 method4(float f, class1 c) { }   //返回值为class、有二个参数的方法

  方法又称为函数,它既可以作为一个独立的功能,又可以作为类的行为。

  作为独立功能:洗衣机

 1 /// <summary>
 2 /// 洗衣机的功能
 3 /// </summary>
 4 /// <param name="clothing">投放衣物</param>
 5 /// <param name="detergent">投放洗涤剂(单位:克)</param>
 6 /// <param name="wash">选择洗漂(true或false)</param>
 7 /// <param name="dehydration">选择脱水(true或false)</param>
 8 /// <param name="duration">设定时长(单位:分钟)</param>
 9 /// <returns>返回结果</returns>
10 public string washingmachine(string clothing, int detergent, bool wash, bool dehydration, int duration)
11 {
12     if (clothing == null)
13     {
14         return "请放入衣物";
15     }
16     if (duration < 5)
17     {
18         return "洗衣时长不能小于5分钟";
19     }
20     else
21     {
22         float washtime;         //洗漂时长
23         float dehydrationtime;  //脱水时长
24         if (wash)
25         {
26             washtime = dehydration ? duration * 2 / 3 : duration;
27             if (detergent <= 0)
28             {
29                 return "洗漂需要投放洗涤剂";
30             }
31             else
32             {
33                 //开始洗漂衣物
34             }
35         }
36         if (dehydration)
37         {
38             dehydrationtime = wash ? duration - washtime : duration;
39             //开始脱水衣物
40         }
41         return "完成";
42     }
43 }

  作为类的行为:洗衣机

 1 /// <summary>
 2 /// 洗衣机的类
 3 /// </summary>
 4 public class washingmachine
 5 {
 6     #region 字段
 7     /// <summary>
 8     /// 时长(单位:分钟)
 9     /// </summary>
10     public int duration;
11     #endregion
12 
13     #region 方法
14     /// <summary>
15     /// 投放
16     /// </summary>
17     /// <param name="clothing">衣物</param>
18     /// <param name="detergent">洗涤剂(单位:克)</param>
19     public void throwin(string clothing, int detergent) { }
20 
21     /// <summary>
22     /// 洗脱功能
23     /// </summary>
24     public void all() { }
25 
26     /// <summary>
27     /// 洗漂功能
28     /// </summary>
29     public void wash() { }
30 
31     /// <summary>
32     /// 脱水功能
33     /// </summary>
34     public void dehydration() { }
35 
36     /// <summary>
37     /// 设定时长
38     /// </summary>
39     /// <param name="duration">时长(单位:分钟)</param>
40     public void settingtime(int duration) { }
41 
42     /// <summary>
43     /// 开启洗衣机
44     /// </summary>
45     public void open() { }
46 
47     /// <summary>
48     /// 关闭洗衣机
49     /// </summary>
50     public void close() { }
51     #endregion
52 }

  方法作为独立功能对比作为类的行为优点是代码少、运行快,缺点则是维护性和扩展性差;

  方法作为类的行为对比作为独立功能缺点是代码多、运行慢,优点则是维护性和扩展性好。

  c#中有一种功能特殊的方法:构造函数。

 二、方法的重载

  当多个方法所做的事相同,但是参数的个数和参数的类型不同时,会出现同一件事方法名不同,这样既不利于记忆也不利于维护,所以c#支持方法名相同,但是参数个数或者参数类型不同的方法,这种方法叫方法的重载(参数个数相同,类型不同时,参数顺序不同也是重载)。

  比如洗衣机的投放方法,当我只想脱水的时候,我只想传入一个参数衣物;有时我需要衣物按件来放,而不是传入衣物。

 1 public class washingmachine
 2 {
 3     /// <summary>
 4     /// 投放
 5     /// </summary>
 6     /// <param name="clothes">衣物件数</param>
 7     public void throwin(int clothes) { }
 8 
 9     /// <summary>
10     /// 投放
11     /// </summary>
12     /// <param name="clothing">衣物</param>
13     public void throwin(string clothing) { }
14 
15     /// <summary>
16     /// 投放
17     /// </summary>
18     /// <param name="clothes">衣物件数</param>
19     /// <param name="detergent">洗涤剂(单位:克)</param>
20     public void throwin(int clothes, int detergent) { }
21 
22     /// <summary>
23     /// 投放
24     /// </summary>
25     /// <param name="clothing">衣物</param>
26     /// <param name="detergent">洗涤剂(单位:克)</param>
27     public void throwin(string clothing, int detergent) { }
28 
29     /// <summary>
30     /// 投放(参数个数相同,类型不同时,参数顺序不同)
31     /// </summary>
32     /// <param name="clothing">衣物</param>
33     /// <param name="detergent">洗涤剂(单位:克)</param>
34     public void throwin(int detergent, string clothing) { }
35 }

  关联:方法的重载与方法的重写的对比

  后期补充。