Múltiplos casos na declaração do interruptor

Existe uma maneira de passar por múltiplas declarações de caso sem declarar "valor do caso:` repetidamente?

Eu sei que isto funciona:

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;
}

mas I'gostaria de fazer algo como isto:

switch (value)
{
   case 1,2,3:
      //Do Something
      break;
   case 4,5,6:
      //Do Something
      break;
   default:
      //Do the Default
      break;
}

Esta sintaxe I'estou a pensar numa linguagem diferente, ou estou a perder alguma coisa?

Solução

Não há sintaxe em C++ nem C# para o segundo método que você mencionou.

Aí'não há nada de errado com o seu primeiro método. Se, no entanto, você tem intervalos muito grandes, basta usar uma série de if afirmações.

Comentários (4)

Esta sintaxe é do 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

Você não pode usar esta sintaxe em C#. Ao invés disso, você deve usar a sintaxe do seu primeiro exemplo.

Comentários (3)

Uma faceta menos conhecida do switch em C# é que ele depende do **operador=*** e como ele pode ser anulado, você pode ter algo assim:


string s = foo();

interruptor (s) { case " abc": /.../ pausa; case "def": /.../ pausa; }

Comentários (1)