switch deyiminde birden fazla durum

Birden fazla case deyiminin içinden case value: ifadesini tekrar tekrar belirtmeden düşmenin bir yolu var mı?

Bunun işe yaradığını biliyorum:

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

ama böyle bir şey yapmak istiyorum:

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

Aklıma gelen bu sözdizimi farklı bir dilden mi, yoksa bir şey mi kaçırıyorum?

Çözüm

Bahsettiğiniz ikinci yöntem için C++ veya C#'ta herhangi bir sözdizimi bulunmamaktadır.

İlk yönteminizde yanlış bir şey yok. Ancak çok büyük aralıklarınız varsa, sadece bir dizi if deyimi kullanın.

Yorumlar (4)

Bu sözdizimi Visual Basic Select...Case Statement'den alınmıştır:

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

Bu sözdizimini C#'ta kullanamazsınız. Bunun yerine, ilk örneğinizdeki sözdizimini kullanmanız gerekir.

Yorumlar (3)

C#'ta switch'in daha az bilinen bir yönü, operator='e dayanmasıdır ve geçersiz kılınabildiğinden, böyle bir şeye sahip olabilirsiniz:


string s = foo();

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

Yorumlar (1)