c#在类中的Case切换方法
本文关键字:方法 Case | 更新日期: 2023-09-27 18:11:36
试图在类中有一个方法,我在设置它时遇到了麻烦。尝试设置一个字符串appstatus
方法,将字符串保存为appstatus
,但首先必须将值设置为它。我想最终设置值为appstatus
从一个sql查询和访问他们以后在我的列表
public class SampleData
{
public SampleData()
{
}
public string name { get; set; }
public string phoneNbr { get; set; }
public string appstatus
{
get
{
return appstatus;
}
set
{
switch (appstatus)
{
case "A":
appstatus= "Yes";
break;
case "B":
appstatus= "No";
break;
case "E":
appstatus= "Need More Info";
break;
default:
appstatus= ("Unknown");
break;
}
}
}
...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 = (Convert.ToString(read["..."]).Trim());
list.Add(d1);
}
}
}
您的switch
语句需要使用 value
而不是appstatus
。因为appstatus
不是一个自动实现的属性,所以您还需要将该值存储在私有成员中,并更改get
以返回该值。
private string _appstatus;
public string appstatus
{
get
{
return _appstatus;
}
set
{
switch (value)
{
case "A":
_appstatus= "Yes";
break;
case "B":
_appstatus= "No";
break;
case "E":
_appstatus= "Need More Info";
break;
default:
_appstatus= "Unknown";
break;
}
}
你的Setter递归地调用self,会抛出异常。
我的建议是:public class SampleData
{
public SampleData(string name, string phoneNbr, string appStatus)
{
this.name = name;
this.phoneNbr = phoneNbr;
this.appstatus = appstatus;
}
public string name { get; private set; }
public string phoneNbr { get; private set; }
public string appstatus { get; private set; }
现在在其他代码中你可以这样使用
try
{
SampleData d1 = new SampleData(
Convert.ToString(read["..."]),
Convert.ToString(read["..."]),
Convert.ToString(read["..."]).Trim());
list.Add(d1);