C #에서 가장 많이 사용되지 않는 구문 중 하나를 어떻게 든 더 좋아 보이거나 더 잘 작동시킬 수있는 방법을 찾는 데 많은 작업이 진행된 것 같습니다. 개인적으로 switch 문을 사용할 가치가 거의 없다는 것을 알았습니다. 테스트하려는 데이터와 원하는 최종 결과를 분석하는 것이 좋습니다.
예를 들어 알려진 범위의 값을 빠르게 테스트하여 소수인지 확인한다고 가정 해 봅시다. 코드의 낭비 계산을 피하고 온라인에서 원하는 범위의 소수 목록을 찾을 수 있습니다. 방대한 switch 문을 사용하여 각 값을 알려진 소수와 비교할 수 있습니다.
또는 소수의 배열 맵을 만들어 즉시 결과를 얻을 수 있습니다.
bool[] Primes = new bool[] {
false, false, true, true, false, true, false,
true, false, false, false, true, false, true,
false,false,false,true,false,true,false};
private void button1_Click(object sender, EventArgs e) {
int Value = Convert.ToInt32(textBox1.Text);
if ((Value >= 0) && (Value < Primes.Length)) {
bool IsPrime = Primes[Value];
textBox2.Text = IsPrime.ToString();
}
}
문자열의 문자가 16 진수인지 확인하고 싶을 수도 있습니다. 엉뚱하고 다소 큰 switch 문을 사용할 수 있습니다.
또는 정규식을 사용하여 문자를 테스트하거나 IndexOf 함수를 사용하여 알려진 16 진 문자 문자열에서 문자를 검색 할 수 있습니다.
private void textBox2_TextChanged(object sender, EventArgs e) {
try {
textBox1.Text = ("0123456789ABCDEFGabcdefg".IndexOf(textBox2.Text[0]) >= 0).ToString();
} catch {
}
}
1에서 24 사이의 값에 따라 3 가지 다른 작업 중 하나를 수행한다고 가정하겠습니다. IF 문 집합을 사용하는 것이 좋습니다. 그리고 그것이 너무 복잡해지면 (또는 1에서 90 사이의 값에 따라 5 개의 다른 동작과 같이 숫자가 더 커짐) 열거 형을 사용하여 동작을 정의하고 열거 형의 배열 맵을 만듭니다. 그런 다음이 값을 사용하여 배열 맵에 색인을 작성하고 원하는 조치의 열거를 가져옵니다. 그런 다음 작은 IF 문 집합이나 매우 간단한 switch 문을 사용하여 결과 열거 형 값을 처리하십시오.
또한 값 범위를 동작으로 변환하는 배열 맵의 장점은 코드로 쉽게 변경할 수 있다는 것입니다. 유선 코드를 사용하면 런타임에 동작을 쉽게 변경할 수 없지만 배열 맵을 사용하면 쉽습니다.