Switch重构处理
2015-11-20 17:20
344 查看
public class Fun{ public void IFNumberid(int flag) { switch (flag) { case 1: Console.WriteLine("优秀"); break; case 2: Console.WriteLine("良好"); break; case 3: Console.WriteLine("一般"); break; case 4: Console.WriteLine("不及格"); break; default: Console.WriteLine(""); break; } }
以上Case里面是一个有序的数字,处理方法见 switch中case如果是有序的话,如何处理
那么假如我们换成了以下的事例呢?
public class Fun{ public void NameResult(String flag) { switch (flag) { case "a": Console.WriteLine("优秀"); break; case "张三": Console.WriteLine("良好"); break; case "c": Console.WriteLine("一般"); break; case "g": Console.WriteLine("不及格"); break; default: Console.WriteLine(""); break; } }
这里的Case并不是一个有序的,那么我们利用数组索引的办法将并不可行,此时,则可以考虑使用Dictionary<Tkey, Tvalue>来实现Switch中Case的替换
public class Fun{ public void NameResult(String flag) { Dictionary<string, string> cl = new Dictionary<string, string>(); cl.Add("a","不及格"); cl.Add("张三","良好"); cl.Add("c","一般"); cl.Add("g","不及格"); foreach (KeyValuePair<string, string> a in cl) { if(a.key==flag) { Console.WriteLine(a.Value); return ; } } Console.WriteLine(""); } }
另外,很多时候,我们可能根据某个值直接去执行某个方法,这时,采用以上方法也是可行的,
先声明一个委托
private delegate void EatDelegate(); private void functionOne(){ Console.WriteLine("优秀"); } Dictionary<string, EatDelegate> cl = new Dictionary<string, EatDelegate>(); cl.Add("a",functionOne); foreach (KeyValuePair<string, string> a in cl) { if(a.key==flag) { a.Value(); return; } }
相关文章推荐
- 在IE8中如何通过javascripts改变<style />中的内容?
- 字符集、字符编码、XML中的中文编码
- jQuery-AJAX简介
- jquery 使用方法
- [AlwaysOn Availability Groups]排查:AG超过RPO
- JDK并发工具类源码学习系列——PriorityBlockingQueue
- android popupwindow 弹出窗口在控件上方居中,比控件大一倍
- JQuery按照form上传文件+asp.net后台处理(一)
- map两种插入方法解析(insert() 与 下标操作)
- 内存分配
- AT+CSMP 设置短消息文本参数
- 详解linux互斥锁 pthread_mutex和条件变量pthread_cond
- "Java 反序列化"过程远程命令执行漏洞
- AT+CSMP 设置短消息文本参数
- Fragment
- linux学习笔记<命令介绍>
- 小学奥数(下)
- Spring 中的事件监听的实现
- 产生唯一文件
- 旭说数据结构之二叉查找树