switch语句中的多个案例

有没有一种方法可以在不重复说明 "case value: "的情况下落下多个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++和C#中都没有你提到的第二个方法的语法。

你的第一种方法没有什么问题。 然而,如果你有非常大的范围,只需使用一系列的if语句。

评论(4)

这个语法来自Visual Basic Select...Case Statement

Dim number As Integer = 8
Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case Is < 1
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select

你不能在C#中使用这种语法。 相反,你必须使用你第一个例子中的语法。

评论(3)

在C#中,switch的一个鲜为人知的方面是,它依赖于operator=,由于它可以被覆盖,你可以有这样的东西。


string s = foo();

switch (s) { case "abc":/.../ break。 case "def":/.../ 休息。 }

评论(1)