2012-02-10 2 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

Это также безопаснее, потому что вы не получите исключения нулевого указателя, если строка является нулевым. (И это будет null, если строка запроса не существует, что является реалистичным случаем для обработки.) – Servy

+0

@Servy: Это выходит за рамки этого вопроса, но учитывая, что вход поступает непосредственно из запроса, он определенно должен перед использованием проверить на достоверность. – Malice

+0

«default» должен заботиться обо всем, что не является допустимым тестовым случаем, поэтому, если вы этого не делаете .toString, и в каждом действительном случае есть оператор case, по умолчанию используется любой код для обработки любых недопустимых значений. – Servy

11

Изменить его к этому:

switch(strGroup.ToString()) 

ToString() - это метод, а не свойство. Поэтому вам нужно иметь пустую скобку.

+0

Да, oshirowanen, ваша проблема не использовать ToString() как функция –