一、方法
方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用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 }
关联:方法的重载与方法的重写的对比
后期补充。