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) 编辑 收藏 举报