안녕하세요.
C#의 switch문은 여러 조건을 검사할 때 사용되는 제어 구조입니다.
특정 변수나 표현식의 값을 여러 경우(case)와 비교하여, 그 값에 해당하는 코드 블록을 실행합니다.
여러 if-else 문을 대체할 수 있어 코드의 가독성을 높여줍니다.
# switch문 기본 구조
switch (표현식)
{
case 값1:
// 값1에 해당하는 코드
break;
case 값2:
// 값2에 해당하는 코드
break;
// 필요한 만큼 case 추가
default:
// 어떤 case에도 해당하지 않을 때 실행되는 코드
break;
}
- 표현식: switch문에서 평가되는 변수나 표현식입니다.
- case: 표현식의 값이 일치할 수 있는 각 경우를 나타냅니다. 값1, 값2 등으로 표현됩니다.
- break: 각 case가 끝난 후 switch문을 빠져나오기 위해 사용됩니다.
- default: 어떤 case와도 일치하지 않는 경우 실행됩니다. 선택 사항이며, 반드시 포함할 필요는 없습니다.
# 예제: 요일을 문자열로 출력하기
using System;
class Program
{
static void Main()
{
int day = 3;
string dayName;
switch (day)
{
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
case 4:
dayName = "Thursday";
break;
case 5:
dayName = "Friday";
break;
case 6:
dayName = "Saturday";
break;
case 7:
dayName = "Sunday";
break;
default:
dayName = "Invalid day";
break;
}
Console.WriteLine("Day: " + dayName);
}
}
이 예제에서 day 변수의 값이 3이기 때문에, "Wednesday"가 출력됩니다.
# switch문의 특징
1. break문:
- 각 case 블록의 끝에 break문이 필요합니다. break문이 없으면 다음 case로 계속해서 실행됩니다.
이를 "fall-through"라고 하는데, C#에서는 명시적으로 허용하지 않습니다.
즉, 의도적으로 fall-through를 만들 수는 없고, goto를 사용해 비슷한 효과를 낼 수 있습니다.
2. default 케이스:
- default는 필수가 아니지만, 제공하면 어떤 경우에도 해당하지 않는 상황에서 실행할 코드를 정의할 수 있습니다. default는 모든 case문 후에 위치해야 합니다.
# 예제: default 사용
using System;
class Program
{
static void Main()
{
int score = 85;
string grade;
switch (score / 10)
{
case 10:
case 9:
grade = "A";
break;
case 8:
grade = "B";
break;
case 7:
grade = "C";
break;
case 6:
grade = "D";
break;
default:
grade = "F";
break;
}
Console.WriteLine("Grade: " + grade);
}
}
이 예제에서는 score를 10으로 나눈 값에 따라 학점을 계산합니다. score가 85이므로, score / 10의 결과는 8이고, 따라서 학점은 "B"로 출력됩니다.
# 결론
C#의 switch문은 여러 조건을 깔끔하게 처리할 수 있는 강력한 도구입니다. 많은 경우의 수를 처리할 때 if-else 문보다 코드가 더 읽기 쉽고 유지보수하기 좋습니다. switch문을 잘 활용하면 복잡한 조건 처리를 보다 간결하게 구현할 수 있습니다.
감사합니다.
(chat gpt 참고)
'Function > C#' 카테고리의 다른 글
C# 다양한 Substring 문 사용법 정리 (0) | 2024.08.19 |
---|---|
C# 다양한 Split 문 사용법 정리 (0) | 2024.08.18 |
C# 다양한 if-else 문 사용법 정리 (0) | 2024.08.16 |
C# 다양한 for 문 사용법 정리 (0) | 2024.08.15 |
C# 데이터 형변환 (이론) (0) | 2024.08.14 |