C#의 조건부 연산자(conditional operator)는 ?: 기호로 표현되며, 세 개의 피연산자를 사용하기 때문에 '삼항 연산자'라고도 불립니다. 이 연산자는 if-else 문을 한 줄로 간결하게 표현할 수 있어 코드의 가독성을 높이는 데 유용합니다.
조건부 연산자의 문법
expression ? expression : expression
조건부 연산자는 오른쪽에서 왼쪽으로 결합(right-to-left associativity)되며, 다음과 같은 순서로 동작합니다.
- 첫 번째 피연산자는 암묵적으로 bool 타입으로 변환됩니다.
- 첫 번째 피연산자가 true로 평가되면 두 번째 피연산자가 평가됩니다.
- 첫 번째 피연산자가 false로 평가되면 세 번째 피연산자가 평가됩니다.
중요한 점은 마지막 두 피연산자 중 단 하나만 평가된다는 것입니다. 즉, 조건 결과에 따라 필요한 표현식만 실행되므로 불필요한 연산을 줄일 수 있습니다.
예제 코드
다음 예제는 num1이 100인지 확인하고, 참이면 num2에 200을, 거짓이면 0을 대입하는 코드입니다.
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int num1 = 100, num2;
num2 = (num1 == 100 ? 200 : 0);
Console.WriteLine("Number One = " + num1);
Console.WriteLine("Number Two = " + num2);
Console.ReadKey();
}
}
}실행 결과
Number One = 100 Number Two = 200
위 예제에서 num1 == 100은 true이므로 콜론(:) 뒤의 값이 아닌 물음표(?) 뒤의 값인 200이 num2에 할당됩니다. 만약 num1이 100이 아니었다면 num2에는 0이 저장되었을 것입니다.
정리
조건부 연산자는 간단한 분기 로직을 처리할 때 if-else 문보다 코드를 짧고 명확하게 만들어 줍니다. 다만 조건이 복잡하거나 여러 문장을 실행해야 하는 경우에는 오히려 가독성이 떨어질 수 있으므로, 단순한 값 선택 상황에서 사용하는 것이 좋습니다.