• 用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");
    
  • 相关阅读:
    软件工程
    python 浮点数四舍六入五成双
    python 比较内嵌字典的值
    python 之多继承顺序及supper()方法执行顺序
    python之装饰器进化
    Centos7 安装Postgres10
    hive常用操作
    MySQL中case when else end 用法
    python写入日志文件时日志内容重复写入
    python向config、ini文件读取写入
  • 原文地址:https://www.cnblogs.com/gdjlc/p/3401336.html
Copyright © 2020-2023  润新知