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;                      
                  }
                      }        
  • 相关阅读:
    Java中final、finally、finalize的区别
    GC垃圾回收机制详解
    spring ioc Di
    获取不同语言版本的任务状态
    转:系统架构师-基础到企业应用架构
    转:SharePoint【Site Definition 系列】
    转:SharePoint【ECMAScript对象模型系列】
    转:SharePoint【Ribbon系列】
    SharaPoint Farm Administrator密码变换及管理员转换
    转:Programming with Features(操作Feature)
  • 原文地址:https://www.cnblogs.com/zyj649261718/p/4981488.html
Copyright © 2011-2022 走看看