switch-case문은 조건에 따라 각각 다른 처리를 해주는 문법입니다.
조건문으로 많이 사용하는 if문도 있습니다.
if문과 차이점은 if문의 경우에는 조건 분기가 적은 경우에는 작성하기도 편리하며 보기도 쉽지만 조건 분기가 많아지는 경우에는 작성하기도 불편하며 보기에도 좋지 않습니다.
그에 비해 switch문은 조건 분기가 많은 경우에도 작성하기 간단하며 보기에도 좋은편입니다.
switch 사용 방법
switch(값) {
case 조건1:
처리1
break;
case 조건2:
처리2
break;
}
switch문은 값과 일치하는 조건에 정의한 처리를 하며 처리는 break에서 종료됩니다.
case 조건에 숫자 설정
case조건에 정수를 지정한 예제를 보도록 하겠습니다.
case 조건 숫자 예제
using System;
namespace Sample
{
class Sample
{
static void Main()
{
// 입력값
int num = 3;
switch(num) {
case 1:
Console.WriteLine("1이 입력되었습니다.";);
break;
case 2:
Console.WriteLine("2가 입력되었습니다.";);
break;
case 3:
Console.WriteLine("3이 입력되었습니다.";);
break;
case 4:
Console.WriteLine("4가 입력되었습니다.";);
break;
case 5:
Console.WriteLine("5가 입력되었습니다.";);
break;
case 6:
Console.WriteLine("6이 입력되었습니다.";);
break;
}
Console.ReadKey();
}
}
}
결과
3이 입력되었습니다.
위 예제에서는 입력값이 1부터 6중에 일치하는 경우에 각각의 문장을 출력하도록 하고 있습니다.
case 조건에 문자 설정
case 조건에는 문자도 지정할 수 있습니다.
case 조건 문자 예제
using System;
using System;
namespace Sample
{
class Sample
{
static void Main()
{
string day = "화요일";
switch(day) {
case "월요일":
Console.WriteLine("월요일 입니다.";);
break;
case "화요일":
Console.WriteLine("화요일 입니다.";);
break;
case "수요일":
Console.WriteLine("수요일 입니다.";);
break;
case "목요일":
Console.WriteLine("목요일 입니다.";);
break;
case "금요일":
Console.WriteLine("금요일 입니다.";);
break;
case "토요일":
Console.WriteLine("토요일 입니다.";);
break;
case "일요일":
Console.WriteLine("일요일 입니다.";);
break;
}
Console.ReadKey();
}
}
}
결과
화요일 입니다.
case 조건에 default 설정
값이 case조건과 일치하지 않는 경우도 있습니다.
이러한 경우는 아무런 처리도 하지 않습니다.
만약 조건과 일치하지 않는 경우에도 처리를 하고 싶은 경우에는 default case를 사용합니다.
default case 예제
using System;
using System;
namespace Sample
{
class Sample
{
static void Main()
{
// 입력값
int num = 7;
switch(num) {
case 1:
Console.WriteLine("1이 입력되었습니다.";);
break;
case 2:
Console.WriteLine("2가 입력되었습니다.";);
break;
case 3:
Console.WriteLine("3이 입력되었습니다.";);
break;
case 4:
Console.WriteLine("4가 입력되었습니다.";);
break;
case 5:
Console.WriteLine("5가 입력되었습니다.";);
break;
case 6:
Console.WriteLine("6이 입력되었습니다.";);
break;
default:
Console.WriteLine("1부터 6까지의 숫자를 입력하세요.";);
break;
}
Console.ReadKey();
}
}
}
결과
1부터 6까지의 숫자를 입력하세요.
위 샘플에서는 1부터 6까지의 숫자 중 일치하는 숫자가 있는 경우 해당 문자열을 출력하도록 되어있습니다.
하지만 1부터 6까지의 숫자가 아닌 다른 숫자를 입력하였을 경우에는 defalut에 설정한 문자열이 출력하도록 하고 있습니다.
break 생략
switch case문을 사용할 때에는 break를 생략하면 안됩니다.
default 처리에서도 조건과 일치하지 않는 마지막 부분의 처리이기 때문에 break를 생략해도 되지 않을까 생각이 들지만 break는 생략할 수 없습니다.
하지만 break를 생략하여 처리를 할 수 있는 방법도 있습니다.
여러 조건이 같은 처리를 하는 경우입니다.
case 복수 조건 예제
using System;
using System;
namespace Sample
{
class Sample
{
static void Main()
{
string day = "화요일";
switch(day) {
case "월요일":
case "화요일":
case "수요일":
case "목요일":
case "금요일":
Console.WriteLine("평일입니다.";);
break;
case "토요일":
case "일요일":
Console.WriteLine("휴일입니다.";);
break;
}
Console.ReadKey();
}
}
}
결과
평일입니다.
위 샘플처럼 여러 조건이 동일한 결과를 가진 처리를 하는 경우에는 break를 생략하여 같은 결과를 얻을 수 있습니다.
정리
C#의 switch case문을 이용하면 조건이 많은 경우에도 간결하게 소스를 작성할 수 있습니다.
주의 점으로는 break를 생략하면 안 되는 것입니다.
단, 복수의 case 조건이 같은 결과를 처리하는 경우에는 break를 생략하여 처리를 할 수 있습니다.
댓글