조건문 ( Conditional Statements )
프로그래밍에서 조건문(Conditional Statement) 은 특정 조건이 참(true)인지 거짓(false)인지에 따라 실행 흐름을 분기하는 구문이다.
C#에서는 대표적으로 if, else if, else, 그리고 switch 문을 통해 조건문을 작성할 수 있다.
if 문 (if statement)
if () 안의 내용이 true인 경우 코드 블럭 안의 내용을 실행하는 기본적인 조건문이다.
if (이 안이 참이면)
{
// 여기를 실행해
}
else if (그게 아니라 이 안이 참이면)
{
// 여기를 실행해
}
else // 다 아니면
{
// 여기를 실행해
}
매우 간단하고 직관적인 구조이지만 프로그래밍을 한다면 평생 쓰이게 될 기능이니 잘 익혀두자.
switch 문 (switch statement)
여러 조건을 간결하게 처리할 때 유용하다.
switch는 변수의 값에 따라 실행할 분기(case)를 선택하는 방식이다.
switch(판단할 변수)
{
case 이거일때:
// 각종행동
break;
case 이거일떄:
// 각종행동
break;
default:
// 다 아닐때 기본적으로 실행할 행동
break;
}
삼항 연산자 (Ternary Operator)
조건문을 간단히 한 줄로 표현할 수 있다.
이전 연산자 글에서 조건 연산자에 삼항 연산자가 있었다.
매우 편리한 기능이지만 함부로 남용 가독성이 좋지 않게 될 수 있으니 조심해서 사용하자.
(이 값이) ? 참이면 여기 실행 : 거짓이만 여기 실행;
if문과 switch문의 차이
if문과 switch문은 그럼 뭐가 다르고 어떤 차이가 있는지 조금 더 알아보자
기본적으로 if문에는 다양한 조건식을 넣을 수 있다.
if (x > 10 && x < 20 )
과 같은 형태로 말이다
하지만 switch문은 특정 값 하나를 여러 경우의 값과 비교할 때 사용한다
swith (x > 10 && x < 20) 이런 이상한 형태는 불가능하다.
그리고 성능 차이 또한 조금 존재한다
if문의 경우 조건식을 위에서부터 차례대로 검사하기 때문에 조건이 많을수록 검사 횟수가 증가한다.
일반적으로는 상관 없지만 조건이 무지막지하게 많은 경우 성능 차이가 날 수 있다.
반면 switch문은 내부적으로 jump table 또는 헤시 분기로 최적화되어 있다고 한다.
따라서 분기 수가 많을 때는 switch가 더 효율적일 수 있다.
하지만 이건 이론상 그렇다는 거고, 실제로는 대부분 I/O, 로직 처리 비용이 훨씬 커서 두 조건문의 성능 차이는 매우 미미한 수준이다. 따라서 가독성과 코드 구조를 기준으로, 혹은 취향대로 쓰면 된다.
| if문 | switch문 | |
| 조건 표현 | 복잡한 조건식(범위, 논리 연산 등) 가능 | 단일 값과 일치 여부만 비교 가능 |
| 가독성 | 조건이 많아지면 복잡해지고 길어짐 | 여러 분기를 깔끔하게 나열 가능 |
| 성능 | 분기 수가 많을수록 순차 비교로 약간 불리 | 컴파일러 최적화로 분기 수가 많아도 유리할 수 있음 |
| 사용 예시 | 범위 검사, 복잡한 논리 | 정수, 문자열, enum 값 분기 |
| 유지보수 | 다양한 상황을 유연하게 대응 가능 | case 추가/삭제가 간단, 패턴이 명확함 |
개인적으로는 switch문 보다는 if문을 선호한다
switch 너무 문자도 길고 오타내기도 딱 좋다...
지금 이 글을 쓰면서도 swith swicth 별 이상한 오타를 몇 번이나 냈는지 모르겠다.
'C#' 카테고리의 다른 글
| C# - 콘솔로 별 찍기 (삼각형 편) (0) | 2025.09.04 |
|---|---|
| C# - 반복문 ( Loop Statements ) (0) | 2025.09.04 |
| C# - 형변환 ( type casting ) (0) | 2025.09.04 |
| C# - 연산자 (0) | 2025.09.04 |
| C# - 변수와 상수 (0) | 2025.09.03 |