是否有一种方法可以通过多个case语句而不声明case值:重复?
我知道这很管用:
switch (value)
{
case 1:
case 2:
case 3:
// Do some stuff
break;
case 4:
case 5:
case 6:
// Do some different stuff
break;
default:
// Default stuff
break;
}
但我想这样做:
switch (value)
{
case 1,2,3:
// Do something
break;
case 4,5,6:
// Do something
break;
default:
// Do the Default
break;
}
这是我从另一种语言中想到的语法,还是我遗漏了什么?
我认为这个在c# 7或更高版本中更好。
switch (value)
{
case var s when new[] { 1,2 }.Contains(s):
// Do something
break;
default:
// Do the default
break;
}
你也可以在c#的开关情况下检查范围:开关情况:我可以使用一个范围而不是一个数字
OR
int i = 3;
switch (i)
{
case int n when (n >= 7):
Console.WriteLine($"I am 7 or above: {n}");
break;
case int n when (n >= 4 && n <= 6):
Console.WriteLine($"I am between 4 and 6: {n}");
break;
case int n when (n <= 3):
Console.WriteLine($"I am 3 or less: {n}");
break;
}
在c#中切换多个情况
或者如果你想了解基础知识
c#开关箱
只是为了增加对话,使用. net 4.6.2我还能够做以下工作。
我测试了代码,它确实为我工作。
你也可以做多个“或”语句,如下所示:
switch (value)
{
case string a when a.Contains("text1"):
// Do Something
break;
case string b when b.Contains("text3") || b.Contains("text4") || b.Contains("text5"):
// Do Something else
break;
default:
// Or do this by default
break;
}
你也可以检查它是否与数组中的值匹配:
string[] statuses = { "text3", "text4", "text5"};
switch (value)
{
case string a when a.Contains("text1"):
// Do Something
break;
case string b when statuses.Contains(value):
// Do Something else
break;
default:
// Or do this by default
break;
}