2009-05-11 8 views
97

Esto es lo que quiero hacer:¿Cómo agregar "o" en las declaraciones de cambio?

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

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

he intentado con "caso: 2 || 5", pero no funcionó.

El propósito es no escribir el mismo código para diferentes valores.

+0

¿Qué quiere decir "no funcionó"? ¿Te da errores de sintaxis o errores lógicos? – Zack

Respuesta

240

Al apilar cada caja de interruptor, usted logra la condición OR.

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

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

Joel, no es compatible con Falló pero sí permite el apilamiento (por ejemplo, un caso vacío 2 en esta respuesta ejecuta la sección de caso 5). – paxdiablo

+0

Esto era exactamente lo que estaba buscando. Buen trabajo, tu trabajo es apreciado. – Chris

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

lo haces por stacking case labels:

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

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

Case-declaraciones caen automáticamente a través de, si no se especifica lo contrario (escribiendo ruptura). Para ello se puede escribir

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

// etc ... }

+5

Tenga en cuenta que esto solo es válido para casos vacíos. Los casos con cuerpo real no se caen automáticamente. –

3

El ejemplo de switch statement muestra que no se puede apilar no vacíos case s, pero debe utilizar 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 El enlace msdn tiene un ejemplo apilado más abajo en la página. En cualquier caso, los casos apilados funcionan, especialmente en esta pregunta donde el propósito declarado es no escribir código duplicado como se hizo en su caso 1 y 2. –

Cuestiones relacionadas