Если вы используете C # 7, вы можете использовать Pattern Matching, даже если это избыточное убийство, как справедливо указал Джон Скит.Но в случае, если вы хотите придерживаться переключения регистра и хотите уменьшить «регистр», вы можете сделать следующее
switch(number)
{
case var _ when number == 2 || number==3 || number==4:
a+=b;
if(number ==4)
d=f
break;
case 5:
d=e;
break;
}
Вы также можете заменить первый случай вариантами, такими как
case var _ when new[]{2,3,4}.Contains(number):
Или
case var _ when number >= 2 || number <= 3: // As pointed by earlier answer
Без сопоставления с шаблоном, вы также можете сделать следующее
switch(number)
{
case 2:
case 3:
case 4:
a+=b;
if(number ==4)
d=f;
break;
case 5:
d = e;
break;
}
Кстати, если ваша проблема с "a + b", это примерно 60 строк кодау вас всегда есть возможность сделать его функцией (и переместить ее из корпуса переключателя), чтобы повысить удобочитаемость.
switch(number)
{
case 2:
case 3:
case 4:
MethodAbAction();
if(number ==4)
MethodDFAction();
break;
case 5:
MethodDEAction();
break;
}
Кстати, метод с 60 строками никогда не доставляет удовольствия читать.Было бы лучше, если бы вы могли расстаться.