Làm thế nào để thêm hay hoặc trong các câu lệnh chuyển đổi?


129

Đây là những gì tôi muốn làm:

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

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

Tôi đã thử với "trường hợp: 2 || 5", nhưng nó không hoạt động.

Mục đích là không viết cùng một mã cho các giá trị khác nhau.


Bạn có ý nghĩa gì "nó không hoạt động"? Nó cung cấp cho bạn lỗi cú pháp, hoặc lỗi logic?
Zack

Câu trả lời:


324

Bằng cách xếp chồng từng trường hợp chuyển đổi, bạn đạt được điều kiện OR.

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

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

6
Joel, nó không hỗ trợ rơi vào nhưng nó KHÔNG hỗ trợ xếp chồng (ví dụ: trường hợp trống 2 trong câu trả lời này thực thi phần 5 trường hợp).
paxdiablo

Đây chính xác là những gì tôi đang tìm kiếm. Tốt công việc, công việc của bạn được đánh giá cao.
Chris



17

Báo cáo trường hợp tự động rơi vào nếu bạn không chỉ định khác (bằng cách viết ngắt). Do đó bạn có thể viết

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

// Vân vân... }


5
Lưu ý rằng điều này chỉ đúng với các trường hợp trống. Các trường hợp với cơ thể thực tế không tự động rơi qua.
Vào Freund

4

Ví dụ cho câu lệnh chuyển đổi cho thấy rằng bạn không thể xếp chồng các ô trống case, nhưng nên sử dụng 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 Liên kết msdn có một ví dụ xếp chồng xuống trang. Ở mọi mức độ, các trường hợp xếp chồng đều hoạt động, đặc biệt là trong câu hỏi này với mục đích đã nêu là không viết mã trùng lặp như được thực hiện trong trường hợp 1 và 2. của bạn
Gary.Ray

Câu trả lời hữu ích như ví dụ về "trường hợp goto".
Stef Geysels

Tôi ghét goto tuyên bố năm 1992 này là gì?
Moses
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.