2010-11-25 5 views
1

У меня есть два вопроса, с этим кодом:Почему SWITCH ... CASE не принимает «char»?

public int InsertOrUpdateRecord(char _code, string _databaseFileName) 
{ 

    switch(_code) 
    { 
     case 'N': 
      // Some code here 

     case 'U': 
      // Some code here 
    } 
     return 0; 
} 
  1. Он не принимает полукокса апострофа и двойное значение цитаты.
  2. Если я прохожу _code в строке, она дает красное подчеркивание в случае с этой ошибкой:

управление не может упасть через один случай этикетку на другую.

+1

Вы просто не хватает ключевой перерыв в работе для каждого случая - см код Елисея – Berryl 2010-11-25 17:08:38

ответ

12

Причиной ошибки компиляции является то, что case отсутствует в break

switch (_code) 
{ 
    case 'N': 
    // Some code here 
     break; // break that closes the case 

    case 'U': 
    // Some code here 
     break; // break that closes the case 
} 
+3

Это ** делает ** строку поддержки! – 2010-11-25 17:09:55

2

Вам нужно сделать break в конце корпуса:

switch (_code) 
{ 
    case 'N': 
     // Some code here 
     Console.WriteLine("N was passed"); 
     break; 
    case 'U': 
     // Some code here 
     Console.WriteLine("U was passed"); 
     break; 
} 
-1

Там нет никаких проблем с char. См. Это msdn article о вашей ошибке.

0

Если вы не хотите, либо в случаях, чтобы сделать то же самое, как так:

switch(_char) { 
    case 'N': 
    case 'U': 
     // Common code for cases N and U here... 
} 

Вы должны конкретно указать компилятор, где саз завешивает:

switch(_char) { 
    case 'N': 
     // Code here... 
     break; // The N case ends here. 
    case 'U': 
     // Code here with different behaviour than N case... 
     break; // The U case ends here. 
} 

break оператор сообщает компилятор что вы закончили с этим делом и что он должен выйти из инструкции switch.

0

вы можете либо написать оператор break или return, как приведенный ниже код.

char _code = 'U'; переключатель (_code) { случай 'N':

   case 'U': 
        return; 
      } 

ИЛИ,

символ _code = 'и'; переключатель (_code) { случай «N»:

   case 'U': 
        break; 
      }