2016-03-18 2 views
-1

Рассмотрим следующий сазеПроверка случай множественного заявления случае

Case 'A': 
    break; 
Case 'B': 
Case 'C': 
    // some logic 
    int i = 0; 

    // here I need i =5 (if case id 'B') and i=10 (if case is 'C') 

    // Rest of the logic is same 
    break; 

Я знаю, что могу достичь этого, написав отдельный случай для «B» и «C» и записи остальной логики в отдельной функции и вызова эта функция в случае «B» и «C».

Но есть ли способ, я могу проверить дело в заявлении Дело только ... следующим

Case 'B': 
Case 'C': 
    // Can I check here 
    // if (case == 'B') 
    //  i = 5; 
    // if (case == 'C') 
    //  i = 10; 
    // Rest of the logic 
+2

Используйте этот переключатель (** переменная **), если (** переменная ** == «C») ... – CSharpie

+1

вы, вероятно, должны переместить общую логику в метод – Domysee

+0

Почему вы не хотите писать два отдельных случая? –

ответ

2

Я попытался следующие, который работал без каких-либо проблем:

switch (a) 
{ 
    case 'A': 
     Console.WriteLine("Es ist ein 'A'."); 
     break; 
    case 'B': 
    case 'C': 
     if (a == 'B') 
      Console.WriteLine("Es ist ein 'B'."); 
     if (a == 'C') 
      Console.WriteLine("Es ist ein 'C'."); 
     break; 
} 

Но если вы просто проверяете, есть ли это «B» или «C», я бы предложил написать два отдельных случая.

+0

Я предположил, что 'a' было каким-то ужасно сложным выражением, которое они не хотели повторять и не хотели размещать в отдельной переменной, но поскольку это было принято, я, должно быть, ошибаюсь. –

+0

'char a = 'C';' не нужен. Я просто думал проверить, является ли случай «B» или «C». И условие 'if (a == 'B')' делает это. Так что это принятый ответ. Спасибо за помощь! –

+0

Я случайно добавил 'char a = 'C'' к моему ответу, потому что использовал его для проверки работы' 'case-ifs''. –

2

Поместите свой //Rest of Logic внутри нового метода, и сделать отдельные тестовые случаи для кода аккуратным:

private void DoSomething(int i) 
{ 
    //Rest of Logic 
} 

public void SwitchMethod(char input) 
{ 
    int i = 0; 
    Switch (input) 
    { 
     case 'A': 
      break; 
     case 'B': 
      i = 5; 
      DoSomething(i); 
      break; 
     case 'C': 
      i = 10; 
      DoSomething(i); 
      break; 
    } 
} 
+1

Да, это очевидное решение и хорошее. Но я думал сделать это, не используя разные случаи. –

Смежные вопросы