2009-11-25 5 views
0

나는 추격에 넘어갈 것이다. 스위치에 관해서는 두 가지 질문이 있지만 간단하게 설명 할 수는 없습니다.C# 스위치 문답 질문

첫째 :

C# 스위치 문에서

이 경우 문 (int 치의 포함) 연속으로해야합니까?

switch(someInt) 
{ 
    case 1 
    // some code 
    case 2 
    // some code 
    case 3 
    // some code 
} 

또는 다음과 같이 할 수 있습니다 :

예를 들어

switch(someInt) 
{ 
    case 1 
    case 3 
    case 5 
} 

내가 일반적으로 경우-else 문이 그런 일을 위해 사용되는 것을 알고,하지만 난 가능하다면 궁금 해서요.

또한 사례 진술에서 실제 숫자를 사용하는 것은 마법의 숫자로 간주됩니까? 아니면 case 문에 사용할 상수를 선언하는 것이 더 나은 방법일까요?

감사합니다.

편집 : 답변에 대한 당신의 모든

감사합니다! 감사합니다.

+0

좋은 학문적 인 노력으로 나는 반사체를 다운로드하고 스위치 문이 컴파일 될지 살펴볼 것을 권한다. – Josh

답변

0

case 문 값은 반드시 연속적 일 필요는 없습니다.

또한 정수 값만 사용하지 않습니다. 문자열도 마찬가지로 작동합니다.

마법의 숫자가 걱정된다면 가장 좋은 방법은 열거 형을 만드는 것입니다. 그것은 그 마법의 숫자의 의미를 전달합니다. 그렇지 않으면 그것을 가지고 즐기십시오.

0

연속적 일 필요는 없습니다. 내가 그 일을 명확하게하기 위해 노력하지만.

1

원하는 순서로 지정할 수 있습니다. 그리고 아니, 실제 숫자를 사용하는 것이 항상 나쁜 것은 아닙니다. 하지만 마법의 숫자는 아닙니다. 당신은 어쩌면

switch (numberOfItems) 
{ 
    case 0: 
     break; 
    case 1: 
     break; 
    default: 
     break; 
} 

처럼 int을 비교하는 경우 (물론, 이것은 단지 예입니다 내가 현실 세계에서이 코드를보고 상상할 수 없다) 번호를 사용

0

주문이 중요하지 않습니다, 컴파일러는 당신을 위해 그 일을 할 것입니다.

숫자에 의미를 부여하기 위해 열거 형 또는 const int 중 하나를 사용하는 것을 선호합니다. 특히 다른 사람이 도로를 관리 할 때 특히 그렇습니다.

+0

해당 번호의 목적에 따라 다릅니다. 예를 들어 이전에 조사를 시작했습니다. 여기에 정말로 열거 형이 필요합니까? –

0

둘 다를 수행 할 수 있습니다. 구문은 이것이다 :

switch(someInt) 
{ 
    case 1: 
    // some code 
    break; 

    case 2: 
    // some code 
    break; 

    case 3: 
    // some code 
    break; 

    default: 
    // code for "else" case 
    break; 
} 
or is it possible to do something like the following: 

switch(someInt) 
{ 
    case 1: 
    case 3: 
    case 5: 
    // some code 
    break; 
} 

참고 콜론과 break의 (당신이 가까이있어).

매직 넘버의 사용법은 일반적으로 상수에 리터럴을 넣는 것을 선호하지만, factor divisibility를 확인하는 가장 낮은 숫자와 같이 눈에 띄게 명백한 숫자는 예외입니다.

+0

나의 배지 받으십시오! downmod 주셔서 감사합니다! : D –

0

작은 최적화로서 실제/예상 빈도에 따라 사례 값을 주문할 수 있습니다. 또한 "기본"사례를 추가하여 열거 형을 사용한 곳을 쉽게 발견하고 계정을 잊어 버릴 수 있습니다. 이것은 상수보다 enum 값을 사용하는 또 다른 이유입니다.

+0

int에 대해서는 모든 분기가 순서에 관계없이 일정한 시간이라고 생각했습니다. 나는 근원이 없다, 그러나 누군가는 확실하게 알고 있는가? – recursive