zoukankan      html  css  js  c++  java
  • 用Dictionary替换switch case

    用switch case处理一个很长的判断,例如56个民族01代表汉族,02代表藏族,03代表壮族...,当传入数字想获取民族名称时就得写56个case,当传入民族获取背后的数字时,又得再写56个case,如下所示:

    private string GetNationValue(string s)
    {
        string result = "5";                      
        switch (s)
        {
            case "01":
                result = "汉族";
                break;
            case "02":
                result = "藏族";
                break;
            case "03":
                result = "壮族";
                break;
            case "04":
                result = "朝鲜族";
                break;
            //这里省略其它......
        }         
        return result;
    }
    private string GetNationKey(string s)
    {
        string result = "5";                      
        switch (s)
        {
            case "汉族":
                result = "01";
                break;
            case "藏族":
                result = "02";
                break;
            case "壮族":
                result = "03";
                break;
            case "朝鲜族":
                result = "04";
                break;
            //这里省略其它......
        }         
        return result;
    } 
    

     
    这么长的代码很丑陋,要修改也不容易,可以通过Dictionary来改进,键和值是成对写在一起的,非常容易维护,改写后代码如下:

    public enum FormatType
    {
        GetKey,
        GetValue
    }
    public class Format
    {
        private static string Get(Dictionary<string, string> dict, FormatType formatType, string code)
        {           
            if (formatType == FormatType.GetKey)
                 return dict.FirstOrDefault(d => d.Value == code).Key;
            else
                 return dict.FirstOrDefault(d => d.Key == code).Value;  
        }
        public static string GetNation(FormatType formatType, string code)
        {
           Dictionary<string, string> dict = new Dictionary<string, string>{  
                    {"01","汉族"},
                    {"02","藏族"},
                    {"03","壮族"},
                    {"04","朝鲜族"}
                    //这里省略其它......
            };
           return Get(dict, formatType, code);
       }
    }
    

    使用:
    获取"汉族"的编码

    string key = Format.GetNation(FormatType.GetKey, "汉族");
    

    获取"01"代表的民族

    string value = Format.GetNation(FormatType.GetValue, "01");
    
  • 相关阅读:
    关于使用stanfordcorenlp一直运行不报错的解决方法
    小程序项目报错
    小程序项目学习笔记
    如何将知网下载的caj文件转换为pdf文件
    干眼症治疗方法
    事务基础
    Android的四大组件
    异步任务AsyncTask使用解析
    Android Service的生命周期
    2016 校招, Android 开发,一个本科应届的坎坷求职之路(转)
  • 原文地址:https://www.cnblogs.com/gdjlc/p/3401336.html
Copyright © 2011-2022 走看看