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.