使用委托来减少if..else判断
2012-02-21 00:43
363 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _13 { public class ClassPeople { public void SayChinese(string name) { Console.WriteLine("你好," + name); } public void SayEnglish(string name) { Console.WriteLine("Hello," + name); } public enum Language { English, Chinese } public void DoWork(string name, Language lang) { switch (lang) { case Language.English: SayEnglish(name); break; case Language.Chinese: SayChinese(name); break; } } } class Program { static void Main(string[] args) { ClassPeople cp = new ClassPeople(); cp.DoWork("李天平", ClassPeople.Language.Chinese); cp.DoWork("litianping", ClassPeople.Language.English); System.Console.ReadLine(); } } }
上述代码,根据传进来的语言枚举值和名字符串来输出相应语言的问候语,不过,这个方法的可扩展性太差了,如果以后我们需要再添加韩文版,日文版,就不得不反复修改枚举和Dowork()方法,以适应新的需求。
使用委托可以解决优化此类问题。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _14 { public delegate void SayDelegate(string name); public class ClassPeople { public void SayChinese(string name) { Console.WriteLine("你好," + name); } public void SayEnglish(string name) { Console.WriteLine("Hello," + name); } //注意此方法,它接受一个SayDelegate类型的方法作为参数 public void DoWork(string name, SayDelegate MakeSay) { MakeSay(name); } } class Program { static void Main(string[] args) { ClassPeople cp = new ClassPeople(); cp.DoWork("李天平", cp.SayChinese); cp.DoWork("litianping", cp.SayEnglish); System.Console.ReadLine(); } } }
优化化,我们要加一种问候语,只要新增一个方法就可以了。
相关文章推荐
- 使用委托来减少if..else判断
- 关于使用SPI来减少项目中的if else判断
- 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A? B:C)
- If...Else 和Switch 判断语句的使用
- React中使用if else 条件判断
- 【九度1506】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 智力题总结——求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- React中使用if else 条件判断
- 如何在JSP页面中使用JSTL标签实现if-else判断
- 减少if else 语句使用的个人集锦
- React中使用if else 条件判断
- 如何在JSP页面中使用JSTL标签实现if和if-else判断
- 如何在代码中减少if else语句的使用
- C/C++学习(一)题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句
- 【算法题】题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- React中使用if else 条件判断
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- 代码重构----使用java有限状态机来消除太多的if else判断