2013-04-29 94 views
0

尋找在類中實現switch case語句的方法。我有一個我正在從SQL select和sql datareader寫入的類。無法設置Status類,我將字符串傳遞給它,並返回相應的字符串結果並將其保存到appstatus。我無法在每種情況下添加中斷,因爲我收到檢測到的不可達代碼。我來自哪裏選擇SQL訪問類和寫入 錯誤 - 成員名稱不能與它們的封閉類型switch-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"); 
     } 
    } 

} 

這裏是:現在我得到這個錯誤。

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

「錯誤 - 成員名稱不能與它們的封閉類型」嘗試重命名成員函數狀態以外的東西,因爲這是名班上。 – LlamaCloud 2013-04-29 14:06:04

回答

0

唯一的問題,我可以看到(我想!),你需要保存,否則該值只是返回,並沒有利用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; 
     } 
    } 
} 
0

如果這只是一個輔助方法,則不需要實例。

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["..."]);  
相關問題