使用委托来减少if..else判断
来源:互联网 发布:x4软件怎么下载 编辑:程序博客网 时间:2024/05/05 20:43
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(); } }}
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(); } }}
优化化,我们要加一种问候语,只要新增一个方法就可以了
0 0
- 使用委托来减少if..else判断
- 减少if-else使用
- 如何在代码中减少if else语句的使用
- 减少if else 语句使用的个人集锦
- 代码重构----使用java有限状态机来消除太多的if else判断
- 代码重构----使用java有限状态机来消除太多的if else判断
- mybatis 中使用if else 进行判断
- if /else判断语句
- Smarty if else /if 判断
- Smarty if else /if 判断
- 使用xml文件来代替很多的if else
- C_判断语句if与else的组合使用
- C_判断语句if与else的嵌套使用
- 在aspx使用if else 判断是否显示内容
- SQL语句中如何使用含有if....else...判断语句
- 在SQL语句里使用if else 判断
- sql中的判断语句 if...else的使用
- SQL语句中如何使用含有if....else...判断语句
- MVC 验证码
- PHP高级程序员需要掌握哪些技术?
- sudo: must be setuid root 错误解决方法
- PECL源码编译安装
- 转载:大学是怎么该是什么样????
- 使用委托来减少if..else判断
- swift (二)
- 切分窗口
- RSS源收藏
- Linux下,安装vsftp及其配置,centos6.5
- UVA10684 The jackpot 贪心/dp
- Android SQLite性能分析————c博客精品推荐
- The import android.support.v7.app cannot be resolved(安卓Eclipse问题 )
- Alpha、Beta、RC、RTM、OEM、RVL、EVAL、RTL版本区别