В .Net только Visual Basic допускает диапазоны в операторах switch, но в C # для этого нет допустимого синтаксиса.
Решая вашу конкретную проблему на C #, я бы решил ее так:
if(number >= 1 && number <= 9)
{
if(number < 5)
{
}
else
{
}
}
else
{
}
Чтобы проиллюстрировать это дальше, представьте, что у вас есть процентное значение.
Используя вашу проблему в качестве шаблона, вы можете пожелать, чтобы это выглядело так:
switch (percentage)
{
case (0 to 19):
break;
case (20 to 39):
break;
case (40 to 69):
break;
case (70 to 79):
break;
case (80 to 100):
break;
default:
break;
}
Однако, поскольку C # не поддерживает этот синтаксис, вот решение, которое позволяет C #:
if (percentage >= 0 && percentage <= 100)
{
if (percentage >= 40)
{
if (percentage >= 80)
{
}
else
{
if (percentage >= 70)
{
}
else
{
}
}
}
else
{
if (percentage >= 20)
{
}
else
{
}
}
}
else
{
}
К этому нужно немного привыкнуть, но когда вы это получите, все будет в порядке.
Лично я приветствовал бы операторы switch, разрешающие диапазоны.
Будущее операторов переключения C #
Вот несколько идей о том, как можно улучшить операторы switch:
Версия А
switch(value)
{
case (x => x >= 1 && x <= 4):
break;
case (x => x >= 5 && x <= 9):
break;
default:
break;
}
Версия B
switch(param1, param2, ...)
{
case (param1 >= 1 && param1 <= 4):
break;
case (param1 >= 5 && param1 <= 9 || param2 != param1):
break;
default:
break;
}