2009-05-11 5 views
97

To jest to, co chcę zrobić:Jak dodać "lub" w instrukcjach przełączania?

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

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

Próbowałem z "przypadek: 2 || 5", ale to nie działa.

Celem jest niepisanie tego samego kodu dla różnych wartości.

+0

Co masz na myśli "to nie zadziałało"? Czy daje błędy składniowe lub błędy logiczne? – Zack

Odpowiedz

240

Układając każdą skrzynkę przełącznika, uzyskujesz warunek LUB.

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

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

Joel, nie obsługuje przewracania, ale obsługuje wsparcie w stosie (np. Pusty przypadek 2 w tej odpowiedzi wykonuje sekcję przypadku 5). – paxdiablo

+0

To było dokładnie to, czego szukałem. Dobra robota, twoja praca jest doceniana. – Chris

18
case 2: 
case 5: 
do something 
break; 
30

to zrobić przez stacking case labels:

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

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

Przykładowe sprawozdanie automatycznie spaść przez jeśli nie określono inaczej (pisząc przerwy). Do nich można napisać

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

// etc ... }

+5

Należy pamiętać, że dotyczy to tylko pustych przypadków. Przypadki z faktycznym ciałem nie przejmują automatycznie. –

3

Przykład dla switch statement pokazuje, że nie można układać niepuste case s, ale należy używać goto s:

// 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."); 
    } 
} 
+0

-1 Łącze msdn ma ułożony przykład w dalszej części strony. W każdym razie, stosy w stosach działają, szczególnie w tym pytaniu, gdzie deklarowanym celem jest nie pisanie duplikatu kodu tak jak w przypadku 1 i 2. –