Casi multipli nella dichiarazione switch

C'è un modo per passare attraverso più dichiarazioni di caso senza dichiarare "valore di caso:` ripetutamente?

So che questo funziona:

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

ma vorrei fare qualcosa del genere:

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

Questa sintassi mi viene in mente da una lingua diversa o mi manca qualcosa?

Soluzione

Non esiste una sintassi in C++ o C# per il secondo metodo che hai menzionato.

Non c'è niente di sbagliato nel tuo primo metodo. Se però hai degli intervalli molto grandi, basta usare una serie di istruzioni if.

Commentari (4)

Questa sintassi viene dal 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

Non puoi usare questa sintassi in C#. Invece, devi usare la sintassi del tuo primo esempio.

Commentari (3)

Una sfaccettatura meno conosciuta di switch in C# è che si basa su operator= e dato che può essere sovrascritto si potrebbe avere qualcosa del genere:

pre> codice> stringa s = foo();

switch (s) { caso "abc": /.../ break; caso "def": /.../ break; }

Commentari (1)