C#类型成员:方法

一、方法

  方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用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 }

  关联:方法的重载与方法的重写的对比(见C#多态)

  后期补充。

posted on 2019-08-20 19:35  yaojieyuan  阅读(929)  评论(0编辑  收藏  举报

导航