Ar yra būdas pereiti per kelis case teiginius nenurodant case value:
pakartotinai?
Žinau, kad tai veikia:
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;
}
bet norėčiau padaryti kažką panašaus į tai:
switch (value)
{
case 1,2,3:
//Do Something
break;
case 4,5,6:
//Do Something
break;
default:
//Do the Default
break;
}
Ar tai sintaksė, apie kurią galvoju, yra iš kitos kalbos, ar aš kažką praleidau?
Antrojo jūsų paminėto metodo sintaksės nėra nei C++, nei C#.
Jūsų pirmajame metode nėra nieko blogo. Tačiau jei turite labai didelius intervalus, tiesiog naudokite eilę if teiginių.
Ši sintaksė paimta iš 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
Šios sintaksės negalima naudoti C#. Vietoj to turite naudoti pirmojo pavyzdžio sintaksę.
Vienas mažiau žinomas switch aspektas C# kalboje yra tai, kad jis priklauso nuo operator=, o kadangi jį galima pakeisti, galite sukurti kažką panašaus:
string s = foo();
switch (s) {
case "abc": /.../ break;
case "def": /.../ break;
}