web-dev-qa-db-fra.com

Comment ajouter "ou" dans les instructions switch?

C'est ce que je veux faire:

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

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

J'ai essayé avec "case: 2 || 5", mais cela n'a pas fonctionné.

Le but est de ne pas écrire le même code pour des valeurs différentes.

118
Ivan Prodanov

En empilant chaque boîtier de commutateur, vous remplissez la condition OR.

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

    case 7:
    case 12:
    ...
    break;
    ...
}
295
Jose Basilio

Vous le faites par empiler les étiquettes de cas :

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

    case 7: 
    case 12:
    ...
    break;
    ...
}
34
Dave Webb
case 2:
case 5:
do something
break;
19
On Freund

Les instructions de casse échouent automatiquement si vous ne spécifiez pas autrement (en écrivant break). Donc vous pouvez écrire

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

// etc... }

17
AnnaR

L'exemple de instruction switch montre que vous ne pouvez pas empiler cases non vide, mais que vous devez utiliser gotos:

// 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.");
   }
}
4
gimel