2013-03-02 4 views
2

현재 평가중인 사례를 확인할 수 있습니까? 이 예제 코드처럼 뭔가 : 나는 까다로운 내가 WriteLine에 시작했습니다 일단 current_num를 찾기 위해 사전이나 뭔가를 사용하지만, 얻을 수있는 기본 방법이 될 수 있으리라 생각switch 문에서 현재 대소 문자를 판별하는 방법은 무엇입니까?

const int one = 1; 
const int two = 2; 

int current_num = 1; 

switch (current_num){ 
     case one: 
     case two: 
      WriteLine(current_case) //outputs 'one' 
      break; 
} 

현재 평가중인 현재 사례의 이름입니다.

편집 : 짧은 대답, 불가능합니다. 그럴듯한 대안에 대한 JonSkeet의 대답을 확인하십시오.

+1

'case' 표현식은 단지 상수 일 수 있기 때문에 시작하는 데는 C#이 유효하지 않습니다. 나는 당신이 정말로 존재하지 않는 무언가를하려고 노력하고 있다고 생각합니다. –

+0

@JonSkeet : 그렇습니다.하지만 "1"을 1 등으로 대체한다면, 그것은 여전히 ​​흥미로운 질문입니다. 비록 내가 IL Weaving이나 다른 사후 처리 기술 없이는 가능하다고 의심하지만. – Alxandr

+0

@Alxandr : "one"을 1로 바꾸면 왜'WriteLine (current_num) '을 사용하지 않는 것이 좋을까요? OP가 무엇을 달성하려고하는지 명확하게 알지 못합니다. * 도움이 될만한 답변을 게시했지만 더 명확하게 할 수는 있습니다. –

답변

5

이 아니에요 당신이해야 할 노력하고,하지만 난 당신이 열거 더 나을 것 의심 무엇을 정말 선택 :

enum Foo { 
    One = 1, 
    Two = 2, 
    Three = 3 
} 

... 

int someValue = 2; 
Foo foo = (Foo) someValue; 
Console.WriteLine(foo); // Two 

당신은 여전히 ​​경우 문 내에서 이것을 사용할 수 있습니다 :

switch (foo) { 
    case Foo.One: 
    case Foo.Two: 
     Console.WriteLine(foo); // One or Two, depending on foo 
     break; 
    default: 
     Console.WriteLine("Not One or Two"); 
} 
관련 문제