Bagaimana menambahkan "atau" dalam pernyataan beralih?

129

Inilah yang ingin saya lakukan:

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

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

Saya mencoba dengan "case: 2 || 5", tetapi tidak berhasil.

Tujuannya adalah untuk tidak menulis kode yang sama untuk nilai yang berbeda.

Ivan Prodanov
sumber
Apa maksudmu "itu tidak berhasil"? Apakah itu memberi Anda kesalahan sintaks, atau kesalahan logis?
Zack

Jawaban:

324

Dengan menumpuk setiap sakelar, Anda mencapai kondisi ATAU.

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

    case 7:
    case 12:
    ...
    break;
    ...
}
Jose Basilio
sumber
6
Joel, itu tidak mendukung jatuh tetapi tidak mendukung penumpukan (misalnya, kasus kosong 2 dalam jawaban ini mengeksekusi bagian kasus 5).
paxdiablo
Ini persis apa yang saya cari. Kerja bagus, pekerjaanmu dihargai.
Chris
36

Anda melakukannya dengan menumpuk label kasus :

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

    case 7: 
    case 12:
    ...
    break;
    ...
}
Dave Webb
sumber
19
case 2:
case 5:
do something
break;
Di Freund
sumber
17

Pernyataan kasus secara otomatis gagal jika Anda tidak menentukan sebaliknya (dengan menulis jeda). Untuk itu Anda bisa menulis

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

// dll ...}

AnnaR
sumber
5
Perhatikan bahwa ini hanya berlaku untuk kasing kosong. Kasus dengan tubuh yang sebenarnya tidak secara otomatis jatuh.
Pada Freund
4

Contoh untuk pernyataan switch menunjukkan bahwa Anda tidak dapat menumpuk yang tidak kosong case, tetapi harus menggunakan 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.");
   }
}
Gimel
sumber
-1 Tautan msdn memiliki contoh yang ditumpuk di bagian bawah halaman. Bagaimanapun, kasus ditumpuk bekerja, terutama dalam pertanyaan ini di mana tujuan yang dinyatakan adalah untuk tidak menulis kode duplikat seperti yang dilakukan dalam kasus Anda 1 dan 2.
Gary.Ray
Berguna menjawab sebagai contoh "kasus goto".
Stef Geysels
Saya benci pernyataan goto apa ini tahun 1992?
Musa