?: 연산자(C# 참조)
업데이트: 2007년 11월
조건 연산자(?:)는 Boolean 식의 값에 따라 두 값 중 하나를 반환합니다. 조건 연산자는 다음과 같은 형태로 사용됩니다.
condition ? first_expression : second_expression;
설명
조건이 true이면 첫 번째 식을 계산한 결과가 연산 결과가 되고, false이면 두 번째 식을 계산한 결과가 연산 결과가 됩니다. 항상 두 식 중 하나만 계산됩니다.
조건 연산자를 사용하면 if-else 구성이 필요했을 계산을 더 간결하고 세련되게 표현할 수 있습니다. 예를 들어, sin 함수 계산에서 0으로 나누기를 방지하려는 경우 다음과 같은 방법을 사용할 수 있습니다.
if(x != 0.0) s = Math.Sin(x)/x; else s = 1.0;
또한 조건 연산자를 사용해도 같은 효과를 얻을 수 있습니다.
s = x != 0.0 ? Math.Sin(x)/x : 1.0;
조건 연산자는 오른쪽을 결합하기 때문에 다음과 같은 형태의 식은
a ? b : c ? d : e
다음과 같이 계산되며
a ? b : (c ? d : e)
다음과 같이 사용할 수는 없습니다.
(a ? b : c) ? d : e
조건 연산자는 오버로드할 수 없습니다.
예제
class ConditionalOp
{
static double sinc(double x)
{
return x != 0.0 ? Math.Sin(x) / x : 1.0;
}
static void Main()
{
Console.WriteLine(sinc(0.2));
Console.WriteLine(sinc(0.1));
Console.WriteLine(sinc(0.0));
}
}
/*
Output:
0.993346653975306
0.998334166468282
1
*/