2012-02-10 44 views
2

我有以下類型的代碼:開關的情況下給我一個錯誤

String strGroup = Request.QueryString["group"]; 

switch(strGroup.ToString){ 
    case "Clients": 
     // do something here 
     break; 
    case "Addresses": 
     // do something here 
    break; 
    case "Matters": 
     // do something here 
    break; 
    case "Individuals": 
     // do something here 
    break; 
    case "Organisations": 
     // do something here 
    break; 
    default: 
     break; 
} 

但它給了以下錯誤:

整型的值預期爲 開關 (strGroup.ToString ){

回答

3

由於strGroup已經是一個字符串,你不能只是做以下和避免的ToString一個冗餘呼叫()?

switch(strGroup) 
+0

這也是安全的,因爲你不會得到一個空指針異常,如果字符串爲空。 (如果查詢字符串不存在,它將爲空,這是一個現實的情況下處理。) – Servy 2012-02-10 15:29:32

+0

@Servy:這是超出了這個問題的範圍,但鑑於輸入直接來自查詢字符串,它應該肯定在使用前進行有效性測試。 – Malice 2012-02-10 18:25:06

+0

'default'應該處理所有不是有效的測試用例,所以如果你沒有.toString它並且每個有效的case都有一個case語句,那麼缺省值是任何代碼處理任何無效值的地方。 – Servy 2012-02-10 18:42:07

11

它改成這樣:

switch(strGroup.ToString()) 

ToString()是一種方法,而不是屬性。因此,你需要有空括號。

+0

是,oshirowanen,你的問題是不使用的toString()作爲一個函數 – 2012-02-10 15:28:29