zoukankan      html  css  js  c++  java
  • 关于重构之Switch的处理【二】

    前面写了一个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;                      

                  }

                      }              


     

  • 相关阅读:
    Moment.js 超棒Javascript日期处理类库
    java模拟http/https post请求
    Mysql中int和varchar类型
    ssh免密码登录
    Linux优雅退出问题
    Jenkins的权限控制和Rundeck的远程认证
    Jenkins系统+独立部署系统
    Nginx基本介绍
    初窥项目构建
    Rundeck概况
  • 原文地址:https://www.cnblogs.com/wangyong969/p/1926940.html
Copyright © 2011-2022 走看看