是否可以在案例中放入几个值?
Switch(colorCode)
{
case (colorCode > 1 && colorCode < 5)
color = red;
case (colorCode > 6 && colorCode < 9)
color = green;
case (colorCode > 10 && colorCode < 15)
color = blue;
}
答案 0 :(得分:3)
使用when
关键字:
int colorCode = 4;
string color = "";
switch(colorCode)
{
case int i when (i > 0 && i <= 3):
color = "red";
break;
case int i when (i > 3 && i <= 6):
color = "green";
break;
case int i when (i > 6 && i <= 9):
color = "blue";
break;
}
ps:别忘了打破你的案情声明
答案 1 :(得分:1)
与其他答案相反,这在C#7中确实是可能的:
Color color;
switch(n)
{
case int m when m >= 1 && m <= 3:
color = Color.red; break;
case int m when m >= 4 && m <= 6:
color = Color.blue; break;
case int m when m >= 7 && m <= 9:
color = Color.green; break;
default:
color = Color.other; break;
}
我不一定建议以这种方式滥用类型模式开关,但严格来说可以做到这一点。
一种更清晰的方法是使用if / else if / else块:
if(n > = 1 && n <= 3)
{
color = Color.red;
}
else if(n >= 4 && n <= 6)
{
color = Color.blue;
}
else if (n >= 7 && n <= 9)
{
color = Color.green;
}
else
{
color = Color.other;
}
答案 2 :(得分:0)
是,不是
有可能从一个case语句跳转到另一个case语句, 但是无法设置范围(对于C#或更高版本5)。
调整后的代码如下:
switch(colorCode)
{
case 1:
case 2:
case 3:
color = red;
break;
case 4:
case 5:
case 6:
color = green;
break;
case 7:
case 8:
case 9:
color = blue;
break;
}
(我假设您想根据您使用<>进行的比较来包含边框值,例如1,3、4、6等),
答案 3 :(得分:0)
看来您的代码是一种非常冗长的方法:
color = colorCode == 8
? blue
: colorCode == 5
? green
: colorCode == 2
? red
: color ;
我不确定您在问题中显示的内容是否真的可以满足您的要求。假设colorCode是一个整数,> 1 && <3就是== 2。