前面写了一个Switch的处理的例子,

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;              

              }

      }             

转载于:https://www.cnblogs.com/wangyong969/archive/2011/01/06/1926940.html

关于重构之Switch的处理【二】相关推荐

  1. 重构机房收费系统(二)

    接上篇<机房收费系统重构(一)> 二.概要设计 完成了用例图,并用结合用例图完善了一下需求分析说明书,忘记是第几次修订需求分析说明书.有了用例图,很自然就进入了概要设计阶段.我认为这一阶段 ...

  2. 用重构指导Clean Code(二):依恋情结和switch语句

    书接上回,我们继续聊如何用重构指导Clean Code. 在Clean Code的3.4节中有这样一段代码(代码清单3-4).(第3章主要讲的是函数,而3.4节讨论的是switch语句.) publi ...

  3. 关于重构之Switch的处理【一】如果是有序的话,如何处理

    今天晚上休息,坐在电脑边,不知道为什么,总感觉心里有很多的想写下来,可不知道该写些什么!突然来了灵感,觉得不如就写点重构相关的什么东西,也回顾一下自己今年一年的历程,2010年年初的时候,刚到公司,某 ...

  4. 从C语言的角度重构数据结构系列(十二)-C语言判断语法详解(ifswitch)

    前言 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战应用系列课程 https://blog.csdn.net/wenyusuran/category_2239261.html ...

  5. 【前端重构技能天赋】(二)——Javascript、CSS篇

    少叙闲言 承接上一篇,这篇是关于JS.CSS的一些优化,相信很多大家都非常了解了,并且实际上也都在这么做,但我想,很多人和我一样,只知道规范这么做,并不太了解到底为啥这么做,到底好处在哪了? Abou ...

  6. 重构(Refactoring)技巧读书笔记 之二

    重构(Refactoring)技巧读书笔记 之二<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...

  7. 环信即时通讯SDK集成——环信 uni-app-demo 升级改造计划——整体代码重构优化(二)

    概述 本次关于 uni-app 代码整体重构工作,基于上一期针对 uni-app 官网 demo 从 vue2 迁移 vue3 框架衍生而来,在迁移过程中有明显感知,目前的项目存在的问题为,项目部分代 ...

  8. C语言实例二(switch——case用法)

    switch--case用法 一.switch语句概述   1.C语言中switch语句是用于实现多分支结构的选择语句,其特点是各分支清晰而且直观.   2.语句格式如下: switch(表达式) { ...

  9. 重构改善代码--代码的坏味道

    关于重构的重要目标之一,便是让代码更容易让人阅读和理解.其实,代码的好与坏在一定程度上是一模一样的,至少对计算机而言,能正常工作的代码都不算太坏.但是,代码也必须能让其他人看懂码农的思想世界,这才是重 ...

最新文章

  1. MVC控件类型-HtmlHelper类
  2. B站上线斯坦福最新「机器学习系统(MLSys)」全集,小伙伴有福了!
  3. 5G时代,工业互联网安全挑战远超消费互联网
  4. 推荐几个MySQL大牛的博客
  5. 如何使用GitHub Action自动发布JAR到Maven仓库
  6. 如何打印出给定尺寸的方格_打印给定号码的表格| 8085微处理器
  7. Android View 如何测量
  8. WPF中自定义MarkupExtension
  9. LINUX/MAC的rpath,搜索依赖库时从哪里开始
  10. SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)...
  11. tips to understand kexec
  12. mysql 内连接查询三表数据_数据库三表连接查询怎么做
  13. php 后台数据 u,Yunucms代码审计:后台XSS和数据库信息泄露
  14. PCB板材及生产流程详述
  15. EM78P153单片机构成433MHz发射电路
  16. Android Studio 模拟器Emulator 设置代理网络 | WIFI图标有叉号但是有网络解决方案
  17. 6G需要1000亿个基站;5G套餐资费年内或降至50至60元;国内首款L4级5G无人驾驶汽车量产...
  18. 天勤python_天勤量化策略库:R-Breaker策略(难度:初级)
  19. C语言程序设计第五版谭浩强课后答案 第九章习题答案
  20. linux du命令,du命令示例

热门文章

  1. windows命令行无法启动redis_windows系统安装redis
  2. linux 多个java_linux 同时出现两个java进程,新手~ 请详细说明,这个是怎么回事。 我就装了一个jdk...
  3. Python中键映射多个值的方法:defaultdict
  4. 【C++grammar】多态、联编、虚函数
  5. java 批量处理 示例_Java中异常处理的示例
  6. java math.cos_Java Math类静态double cos(double d)示例
  7. php中自动转换、强制转换、其他数据类型和bool转换
  8. [Linux]守护进程(精灵进程)
  9. C++Primer学习笔记:第1章 开始
  10. 每日一题:leetcode80.删除有序数组中的重复元素贰