首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

对IF ELSE重构的有关问题

2012-06-11 
对IF ELSE重构的问题C# codeprivate string getStatus(int status){string strStatus if(status.toSt

对IF ELSE重构的问题

C# code
private string getStatus(int status){    string strStatus = "";    if(status.toString().Trim().Equals("status.name.good"))    {        strStatus = "status.value.good";    }else if(status.toString().Trim().Equals("status.name.bad"))    {         strStatus = "status.value.bad";    }else if(status.toString().Trim().Equals("status.name.normal"))    {        strStatus = "status.value.normal";    }    return strStatus;}

这个IF ELSE有些规律大家帮忙重构一下。

[解决办法]
该段代码永远返回空值,一个int型的再怎么转换也不可能和一个标准字符串相等.
C# code
 private string getStatus(int status)            {                string strStatus = "";                switch (status.ToString().Trim())                {                    case "status.name.good":                        strStatus = "status.value.good";                        break;                    case "status.name.bad":                        strStatus = "status.value.bad";                        break;                    case "status.name.normal":                        strStatus = "status.value.normal";                        break;                    default:                        break;                }                return strStatus;            }
[解决办法]
strStatus = new System.Text.RegularExpressions.Regex(@"status.value.\w+").Match(status.ToString().Trim()).Value;
我只是怀疑,int类型的status在ToString怎么可能等于那些字符串?
[解决办法]
C# code
比较好的办法是定义个全局变量的字典 SortedList<int, string> slist = new SortedList<int, string>();启动时就把配置文件里和这有关的读到字典里string[] arr = { "good", "bad", "normal" };foreach (var item in arr){    slist.Add(int.Parse(Util.getValue("status.name." + item)), Util.getValue("status.value." + item));}查询方法private string getStatus(int status){    string str;    slist.TryGetValue(status, out str);    return str;} 

热点排行