如何在 switch 语句中添加“ or”?

这就是我想做的:

switch(myvar)
{
case: 2 or 5:
...
break;


case: 7 or 12:
...
break;
...
}

我试过用“案例2 | | 5”但没用。

其目的是不为不同的值编写相同的代码。

155841 次浏览

通过叠加每个开关情况,您实现 OR 条件。

switch(myvar)
{
case 2:
case 5:
...
break;


case 7:
case 12:
...
break;
...
}
case 2:
case 5:
do something
break;

你可以通过 把箱子标签叠起来:

switch(myvar)
{
case 2:
case 5:
...
break;


case 7:
case 12:
...
break;
...
}

如果你没有指定其他方式(通过写入中断) ,case 语句会自动失败。因此你可以写

switch(myvar)
{
case 2:
case 5:
{
//your code
break;
}

等等。 }

开关语句的示例表明,不能堆叠非空的 case,但应该使用 goto:

// statements_switch.cs
using System;
class SwitchTest
{
public static void Main()
{
Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
Console.Write("Please enter your selection: ");
string s = Console.ReadLine();
int n = int.Parse(s);
int cost = 0;
switch(n)
{
case 1:
cost += 25;
break;
case 2:
cost += 25;
goto case 1;
case 3:
cost += 50;
goto case 1;
default:
Console.WriteLine("Invalid selection. Please select 1, 2, or3.");
break;
}
if (cost != 0)
Console.WriteLine("Please insert {0} cents.", cost);
Console.WriteLine("Thank you for your business.");
}
}

你可以在 C # 9.0 中这样做:

switch(myvar)
{
case 2 or 5:
// ...
break;


case 7 or 12:
// ...
break;
// ...
}

因为 C # 8有更好的可读性的 转换表达式: 不再需要 case:break;/return。结合 C # 9的 逻辑模式:

static string GetCalendarSeason(DateTime date) => date.Month switch
{
3 or 4 or 5 => "spring",
6 or 7 or 8 => "summer",
9 or 10 or 11 => "autumn",
12 or 1 or 2 => "winter",
_ => throw new ArgumentOutOfRangeException(nameof(date), $"Date with unexpected month: {date.Month}."),
};

限制: 使用这种语法,在 =>的右侧不能使用大括号({})来表示语句。