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有些规律大家帮忙重构一下。

解决方案 »

  1.   

    该段代码永远返回空值,一个int型的再怎么转换也不可能和一个标准字符串相等. 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;
                }
      

  2.   

    private string getStatus(int status)
    {
        string str = status.ToString().Trim();
        return str.Substring(0, str.IndexOf('.') + 1) + "value" + str.Substring(str.LastIndexOf('.'));
    }
      

  3.   

    参数类型是 string 还差不多
      

  4.   

    strStatus = new System.Text.RegularExpressions.Regex(@"status.value.\w+").Match(status.ToString().Trim()).Value;
    我只是怀疑,int类型的status在ToString怎么可能等于那些字符串?
      

  5.   

    饿,不好意思各位,参数却是不可能等于那一串的字符串,其实那个name和value只是我配置文件的值罢了。    if(status.toString().Trim().Equals(Util.getValue("status.name.good")))
        {
            strStatus = Util.getValue("status.value.good");
        }else if(status.toString().Trim().Equals(Util.getValue("status.name.bad")))
        { 
            strStatus = Util.getValue("status.value.bad");
        }else if(status.toString().Trim().Equals(Util.getValue("status.name.normal")))
        {
            strStatus = Util.getValue("status.value.normal");
        }
      

  6.   

    还有想问下一楼的朋友,用SWITCH比我IF ELSE效率会高么?
      

  7.   

    switch 效率会高,但是你说“有些规律”,按规律来处理,就没必要 switch 了
      

  8.   

    额。朋友我那个参数确实是一个数字,所以你的方法貌似不对,
    我的配置文件是像这样的
    status.name.good = 0
    status.value.good = 好的
      

  9.   

    比较好的办法是定义个全局变量的字典 
    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;
    }