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;                      
                  }
                      }        
  • 相关阅读:
    Hadoop学习笔记——配置文件
    Hive学习笔记——SerDe
    MapReduce中的OutputFormat
    Nginx 转发时的一个坑,运维居然让我背锅!!
    教你用 Netty 实现一个简单的 RPC!
    完整的支付系统整体架构!
    String 拼接一定会走 StringBuilder?
    腾讯牛逼!终于开源了自家的 Tencent JDK——Kona!!
    Java 数组转 List 的 3 种方式,哪种性能最牛?
    Spring Boot 2.4.0 发布,配置文件重大调整,不要乱升级!!
  • 原文地址:https://www.cnblogs.com/zyj649261718/p/4981488.html
Copyright © 2011-2022 走看看