如何在switch语句中添加"或"?

Iva*_*nov 119 c# switch-statement

这就是我想要做的:

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

    case: 7 or 12:
    ...
    break;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我尝试了"case:2 || 5",但它没有用.

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

Jos*_*lio 301

通过堆叠每个开关盒,您可以实现OR条件.

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

    case 7:
    case 12:
    ...
    break;
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • Joel,它不支持通过,但它支持堆叠(例如,在这个答案中的空案例2执行案例5部分). (5认同)

Dav*_*ebb 34

你可以通过堆叠案例标签来实现:

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

    case 7: 
    case 12:
    ...
    break;
    ...
}
Run Code Online (Sandbox Code Playgroud)


On *_*und 19

case 2:
case 5:
do something
break;
Run Code Online (Sandbox Code Playgroud)


Ann*_*naR 17

如果你没有另外指定(通过写破解),案例陈述自动落空.因此你可以写

switch(myvar)
{
   case 2:
   case 5:
   {
      //your code
   break;
   }
Run Code Online (Sandbox Code Playgroud)

//等...}

  • 请注意,这仅适用于空案例.实际身体的情况不会自动落空. (5认同)

Sym*_*ker 7

从 C # 8 开始,出现了可读性更好的switch 表达式case:不再需要和/ 。结合C# 9的逻辑模式:break;return

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}."),
};
Run Code Online (Sandbox Code Playgroud)

限制:使用此语法,在语句的右侧=>不能使用花括号({})。


gim*_*mel 6

switch 语句的示例表明您不能堆叠非空cases,但应该使用gotos:

// 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.");
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 我讨厌 goto 语句 这是 1992 年吗? (2认同)

Kot*_*Kot 6

您可以从 C# 9.0 开始执行此操作

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

    case 7 or 12:
        // ...
        break;
    // ...
}
Run Code Online (Sandbox Code Playgroud)