Switch ifadelerine "veya" nasıl eklenir?


130

Yapmak istediğim şey bu:

switch(myvar)
{
    case: 2 or 5:
    ...
    break;

    case: 7 or 12:
    ...
    break;
    ...
}

"Case: 2 || 5" ile denedim ama işe yaramadı.

Amaç, farklı değerler için aynı kodu yazmamaktır.


Ne demek "işe yaramadı"? Size sözdizimi hataları veya mantıksal hatalar veriyor mu?
— Zack

Yanıtlar:


325

Her bir anahtar kutusunu istifleyerek, OR koşulunu elde edersiniz.

switch(myvar)
{
    case 2:
    case 5:
    ...
    break;

    case 7:
    case 12:
    ...
    break;
    ...
}

6
Joel, düşmeyi desteklemiyor ancak istiflemeyi destekliyor (örneğin, bu yanıttaki boş bir durum 2, durum 5 bölümünü yürütür).
— paxdiablo

Bu tam olarak aradığım şeydi. İyi iş, çalışmanız takdir ediliyor.
— Chris



17

Siz aksini belirtmezseniz (ara yazarak) durum ifadeleri otomatik olarak geçer. Bunun için yazabilirsin

switch(myvar)
{
   case 2:
   case 5:
   {
      //your code
   break;
   }

// vb... }


5
Bunun yalnızca boş vakalar için geçerli olduğunu unutmayın. Gerçek gövdeli vakalar otomatik olarak düşmez.
— Freund'da

4

Switch deyimi örneği, boş olmayan URL'leri caseyığınlayamayacağınızı, ancak gotos kullanmanız gerektiğini gösterir :

// statements_switch.cs
using System;
class SwitchTest 
{
   public static void Main()  
   {
      Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); 
      Console.Write("Please enter your selection: "); 
      string s = Console.ReadLine(); 
      int n = int.Parse(s);
      int cost = 0;
      switch(n)       
      {         
         case 1:   
            cost += 25;
            break;                  
         case 2:            
            cost += 25;
            goto case 1;           
         case 3:            
            cost += 50;
            goto case 1;             
         default:            
            Console.WriteLine("Invalid selection. Please select 1, 2, or3.");            
            break;      
       }
       if (cost != 0)
          Console.WriteLine("Please insert {0} cents.", cost);
       Console.WriteLine("Thank you for your business.");
   }
}

-1 msdn bağlantısının sayfanın aşağısında yığılmış bir örneği vardır. Her halükarda, yığılmış vakalar işe yarıyor, özellikle de belirtilen amacın sizin durum 1 ve 2'de olduğu gibi yinelenen kod
— yazmamak olduğu bu soruda

"Vakaya git" örneği olarak faydalı cevap.
— Stef Geysels

İfadelerden nefret ediyorum, bu 1992 nedir?
— Musa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.