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