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;                      

                  }

                      }              


     

  • 相关阅读:
    [手把手]VMware 16 pro 装 Windows11专业版并激活
    [HTML] 做个空壳网页练手(菜鸡的自我信息完善
    从零玩HTML的一天
    [总结]C++ 之 向量vector
    [递归专题打卡]2021 6.30-7.2
    初学Socket笔记
    对java是编译型语言还是解释型语言的讨论
    PHP CURL POST 请求设置 Content-Type (指定Content-Type)
    webpack 报错 [webpack-cli] Unable to load '@webpack-cli/serve' command
    Vue cli 创建项目模板 / npm run build 打包后资源引用问题
  • 原文地址:https://www.cnblogs.com/wangyong969/p/1926940.html
Copyright © 2011-2022 走看看