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

c#在类中的Case切换方法

您的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);