0

クラス内にメソッドを持たせようとしていますが、セットアップに問題があります。appstatus文字列を保存する文字列メソッドを設定しようとしていますappstatusが、最初に値を設定する必要があります。最終的にSQLクエリから値を設定しappstatus、後でリスト内でそれらにアクセスしたい

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

2 に答える 2

5

あなたのswitchステートメントは、valueではなく andを使用する必要があり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;
    }
 }
于 2013-04-30T13:18:56.443 に答える
0

あなたのセッターはそれを自己再帰的に呼び出しており、例外をスローします。

私の提案は次のとおりです。

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);
于 2013-04-30T13:31:12.850 に答える