对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;}