您的位置:首页 > 其它

Switch重构处理

2015-11-20 17:20 344 查看
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;              

              }

      }        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: