Можете ли вы использовать несколько значений в операторе switch (C #) - PullRequest
2 голосов
/ 01 мая 2019

Я знаю, что использование нескольких значений в случае переключения должно означать, что вы должны использовать установку if-else, но это скорее вопрос теории, чем практичности.

Мой вопрос, таким образом:

switch(x){
    case 4:
        break;
    case 5 || 6:
        break;
}

Приведенный выше 5 || 6 иллюстрирует случай, когда стрельба либо по x составляет 5 или 6.

Возможно ли это вообще?

Редактировать: Это вопрос кдизайн switch принятия решений, а не использования провалов.

Ответы [ 2 ]

9 голосов
/ 01 мая 2019

Вы можете просто так провалиться, чтобы соответствовать 5 или 6:

switch(x){
    case 4:
        break;
    case 5:
    case 6:
        // do something for 5 or 6
        break;
}
2 голосов
/ 01 мая 2019

Конечно, вы можете, с помощью Pattern matching в C # 7
Я знаю, что это не элегантный способ, но то, что ОП просит

switch(x){
    case var rule when x == 4:
        //do your things
        break;
    case var rule when x == 5 || x == 6:
        //do your other things
        break;
}
...