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


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.