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;                      

                  }

                      }              


     

  • 相关阅读:
    使用PL/SQL运行WorkFlow
    Form 中参数parameter.G_query_find的作用
    APPFND00756: Cannot find combination CCID=1 CODE=GL# SET=50362
    警惕32位程序在MethodImplOptions.Synchronized在x64机器上的同步缺陷
    中文自动分词技术
    error filesystem grub rescue的解决办法。
    创建数据库
    自适应网页设计理念(Responsive Web Design)
    FullCalendar 官方文档翻译
    用CSS控制滚动条
  • 原文地址:https://www.cnblogs.com/wangyong969/p/1926940.html
Copyright © 2011-2022 走看看