이것은 다른 답변에서 거의 다뤄지지 만 "표현식"은 그것이 왜 그렇게 유용한 지 설명하지 않습니다.
C ++ 및 C #과 같은 언어에서는이를 사용하여 로컬 읽기 전용 필드 (메서드 본문 내)를 정의 할 수 있습니다. 읽기 전용 필드의 값이 단일 명령문 내에서 지정되어야하므로 기존의 if / then 명령문으로는 불가능합니다.
readonly int speed = (shiftKeyDown) ? 10 : 1;
다음과 같지 않습니다.
readonly int speed;
if (shifKeyDown)
speed = 10; // error - can't assign to a readonly
else
speed = 1; // error
비슷한 방법으로 다른 코드에 3 차 표현식을 포함 할 수 있습니다. 소스 코드를 더 간결하게 만들뿐만 아니라 (결과적으로 더 읽기 쉬운 경우도 있음) 생성 된 기계어 코드를 더 간결하고 효율적으로 만들 수도 있습니다.
MoveCar((shiftKeyDown) ? 10 : 1);
... 같은 메서드를 두 번 호출하는 것보다 적은 코드를 생성 할 수 있습니다.
if (shiftKeyDown)
MoveCar(10);
else
MoveCar(1);
물론 더 편리하고 간결한 형식이기도합니다 (입력이 적고 반복이 적으며 if / else에서 코드 청크를 복제해야하는 경우 오류 가능성을 줄일 수 있음). 다음과 같은 깨끗한 "일반적인 패턴"사례에서 :
object thing = (reference == null) ? null : reference.Thing;
... 읽고 / 파싱 / 이해하는 것이 (한 번 익숙해지면) 장황한 if / else 등가물보다 빠르기 때문에 코드를 더 빨리 'grok'하는 데 도움이 될 수 있습니다.
물론 유용하다고 해서 모든 경우 에 사용 하는 것이 가장 좋은 것은 아닙니다 . 의미를 사용하여 투명 (또는 더 명확하게) 어디 코드의 짧은 비트를 위해 그것을 사용하는 경우에만 좋을 걸 ?:
좀 더 복잡한 코드를 사용하는 경우, 또는 서로 내에 중첩의 원 사업자는 읽기 코드가 끔찍하게 어렵게 만들 수 있습니다 - .