zoukankan      html  css  js  c++  java
  • 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;                      
                  }
                      }        
  • 相关阅读:
    Hyperledger Fabric的容灾备份及恢复方法
    Sentinel使用
    Fabric1.4 架构和原理
    centos开放指定端口
    Python使用ProtoBuffer
    C++动态创建对象
    Shell笔记
    Go语言基础(二)
    Go语言基础(一)
    git常用命令
  • 原文地址:https://www.cnblogs.com/zyj649261718/p/4981488.html
Copyright © 2011-2022 走看看