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.


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;
    ...
}

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



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 ...}


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

-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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.