스위치 문에 "또는"을 어떻게 추가합니까?


129

이것이 내가하고 싶은 일입니다.

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

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

"case : 2 || 5"시도했지만 작동하지 않았습니다.

목적은 다른 값에 대해 동일한 코드를 작성하지 않는 것입니다.


"작동하지 않았다"는 무슨 뜻입니까? 구문 오류 또는 논리적 오류가 발생합니까?

답변:


324

각 스위치 케이스를 쌓으면 OR 조건이 달성됩니다.

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

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

6
Joel, 추락은 지원하지 않지만 스태킹을 지원합니다 (예 :이 답변의 빈 경우 2는 사례 5 섹션을 실행 함).
paxdiablo

이것은 내가 찾던 것입니다. 잘하셨습니다. 감사합니다.
Chris



17

달리 지정하지 않으면 (중단을 작성하여) 케이스 문이 자동으로 넘어갑니다. 따라서 당신은 쓸 수 있습니다

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

// 등 ...}


5
이것은 빈 경우에만 해당됩니다. 실제 신체가있는 케이스는 자동으로 넘어지지 않습니다.
Freund에서

4

switch 문의 예는 비어 있지 않은 스택 할 수 없지만 cases를 사용해야 함을 보여줍니다 goto.

// 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 msdn 링크에는 페이지 아래에 스택 예제가 있습니다. 어쨌든 누적 된 사례는 특히이 질문에서 사례 1과 2에서 수행 한 것처럼 중복 코드를 작성하지 않는 경우에
효과적입니다

"goto case"의 예로 유용한 답변입니다.
Stef Geysels

나는 이것이 1992 무엇인가 고토 진술을 싫어?
모세
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.