2013-04-30 22 views
0

試圖在類中有一個方法,我在設置它時遇到了麻煩。嘗試設置一個字符串appstatus將字符串保存爲appstatus的方法,但首先必須將該值設置爲該值。我想最終從一個SQL查詢中設置值appstatus後來訪問他們我的名單裏面c#在一個類中的case切換方法

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

你有問題嗎? – SLaks 2013-04-30 13:18:50

+0

您需要一個支持字段。 – SLaks 2013-04-30 13:19:15

+0

您可以使用List [index]訪問您在列表中保存的對象,其中index是一個數字值,表示對象保存的位置。 – 2013-04-30 13:19:51

回答

5

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; 
    } 
} 
+0

你也默默地糾正了一個錯誤;可能想提及它。 – 2013-04-30 13:21:19

+0

@GrantThomas肯定的事情 – cgatian 2013-04-30 13:22:55

+0

謝謝你是多麼偉大。 – Jt2ouan 2013-04-30 13:36:39

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