2012-08-01 5 views
0

나는 성장을 계속해 온 SELECT/SWITCH 문을 가지고있다. 나는 끝내야한다고 생각한다.
그러나 현재 19 가지 옵션이 있습니다. 이보다 더 좋은 옵션이 있습니까? C#SWITCH CASE 문이 너무 커질 수 있습니까?

IE를 코딩

:

switch (Request["typeOfRequest"].ToString()) 
     { 
      case "comboFills": 
       Response.ContentType = "text"; 
       Response.Write(getVizData()); 
       break; 
      case "linkFormField": 
       Response.ContentType = "text"; 
       Response.Write(getVizRuleFields()); 
       break; 
      case "getDispositions": 
+2

모두 문맥에 따라 다릅니다. 논리를 재구성 할 수있는 방법이 있습니까? –

답변

2

스위치 문은 그러나, 결국 효율성 문제로 실행할 수 있습니다 ... 그보다 훨씬 클 수 있습니다. 나는 19 건이 문제라고 생각하지 않는다. 나는 더 큰 진술을했다. 일반적으로 switch 문은 처리 병목 현상이 아니므로 최적화 작업은 마지막 단계입니다.

각 사례는 테스트 및 점프로 CPU를 해석하므로 최악의 경우 얼마나 많은 작업을 수행 할 것인가를 결정하고 가치를 판단 할 가치가 있는지 여부와 실제로 저장하는 작업의 수를 결정합니다 (최악의 경우와 평균의 경우 모두).).

두 가지 확실한 옵션이 있습니다. 당신이 숫자 유형이 그들이 고르게 분포하는 경우 이것은 물론 까다 유지하는 것입니다

if value < 50 
    switch 
    ... 
    end 
else if value < 100 
    switch 
    ... 
    end 
else 
    ... 
end 

.... 여러 스위치로 스위치 문을 분할 할 수 있습니다, 그리고 만드는 상수 값의 지식에 의존 할 수있다 코드 추한. 정말 그저 그런 검색 트리입니다 ...

또 다른 방법은 함수에 모든 사례를 넣고 각 값을 함수 처리기에 매핑하는 트리 또는 해시 테이블을 작성하는 것입니다. 그렇게하면 O (logN) 검색 시간 (또는 해시 테이블의 경우 더 나은)에 항상 의존 할 수 있습니다. 나는 반복한다 : 당신이해야 할 아주 좋은 이유가 없다면 이것을하지 마라.

희망은 도움이 될 것입니다. 언어 관련되지 않은 것에 대해 사과드립니다. 당신은 언어를 언급하지 않았지만 나는 그것이 BASIC과 같은 것이라고 가정하고 있습니다.

+0

BASIS와 비슷한 경우 '사례 선택'으로 코딩 할 수 있습니다. – tomdemuyt

+0

제목이 "switch case"라고 말하고 질문 본문이 "select"라고 말하기 때문에 나는 다소 의아해했습니다. – paddy

+0

죄송합니다 - C# –

관련 문제