Switch-case语句作为公共类中的方法
本文关键字:方法 语句 Switch-case | 更新日期: 2023-09-27 18:11:15
希望在类中实现一个switch case语句方法。我有一个类,我写从SQL选择和SQL数据阅读器。有麻烦设置状态类,我在一个字符串传递给它,它返回相应的字符串结果,并将其保存到appstatus。我不能在每个case之后添加断点,因为我检测到无法到达的代码。现在我得到这个错误:错误-成员名不能与其封闭类型
相同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);
}
}
}
我能看到的唯一问题(我认为!)是您需要将值存储在Status
对象内,否则该值只是返回而不使用。其次,确保在l
变量上使用.ToUpper()
,以防数据库中的数据是小写的。除非您想让任何小写值传递到switch
语句的default
。
现在如果你想访问这个值,只需使用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;
}
}
}
如果这只是一个辅助方法,则不需要实例。
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["..."]);