switch-case语句作为公共类中的方法

时间:2013-04-29 13:54:26

标签: c# class methods switch-statement class-method

希望在类中实现switch case语句方法。我有一个类,我正在写一个SQL select和sql datareader。设置Status类时遇到问题,我将字符串传递给它并返回相应的字符串结果并将其保存到appstatus。我无法在每个案例后添加中断,因为我收到了无法访问的代码。现在我收到这个错误: 错误成员名称不能与其封闭类型

相同
public class SampleData
{
    public SampleData()
    {
    }

    public string name { get; set; }
    public string phoneNbr { get; set; }
    public Status appstatus { get; set; }
}

public class Status
{
    public Status() { }
    public string Status(string l)
    {
        switch (l)
        {
            case "A":
                return "Yes";
            case "B":
                return "No";
            case "C":
                return "Okay";
            case "D":
                return "Maybe";
            case "E":
                return "Need More Info";
            default:
                return ("Unknown");
        }
    }

}

这是我访问该类并从SQL select中写入的地方。

   ...using (SqlDataReader read = cmd.ExecuteReader())
                {
                    while (read.Read())
                    {
                        try
                        {
                            SampleData d1 = new SampleData();
                            d1.name = Convert.ToString(read["..."]);
                            d1.phoneNbr = Convert.ToString(read["..."]);                            
                            d1.appstatus = new Status(Convert.ToString(read["..."]).Trim());

                            list.Add(d1);
                        }
        }
         }

2 个答案:

答案 0 :(得分:0)

我能看到的唯一问题(我认为!)是你需要将值存储在Status对象中,否则只返回值而不使用它。其次,请确保在.ToUpper()变量上使用l,以防数据库中的数据为小写。除非您希望任何小写值落到default语句的switch

现在,如果您想要访问该值,只需使用SampleData.Status.Value

public class Status
{
    public string Value { get; set; }

    //public Status() { }

    public Status(string l)
    {
        switch (l.ToUpper())
        {
            case "A":
                Value = "Yes";
                break;
            case "B":
                Value = "No";
                break;
            case "C":
                Value = "Okay";
                break;
            case "D":
                Value = "Maybe";
                break;
            case "E":
                Value = "Need More Info";
                break;
            default:
                Value = "Unknown";
                break;
        }
    }
}

答案 1 :(得分:0)

如果这只是辅助方法,则不需要实例。

public static class StatusHelper
{
     public static string GetStatus(string text)
     {
     switch (text)
       {
        case "A":
            return "Yes";
        case "B":
            return "No";
        case "C":
            return "Okay";
        case "D":
            return "Maybe";
        case "E":
            return "Need More Info";
        default:
            return ("Unknown");
       }

     }
}

然后只需使用你需要的地方

d1.appstatus = StatusHelper.GetStatus(Convert.ToString(read["..."]);