これは他の答えでかなりカバーされていますが、「それは表現です」はそれがなぜそんなに便利なのか本当に説明していません...
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
同様に、他のコードに三次式を埋め込むことができます。ソースコードをよりコンパクトにする(結果として読みやすくする場合もある)だけでなく、生成されるマシンコードをよりコンパクトかつ効率的にすることもできます。
MoveCar((shiftKeyDown) ? 10 : 1);
...同じメソッドを2回呼び出すよりも少ないコードを生成する場合があります。
if (shiftKeyDown)
MoveCar(10);
else
MoveCar(1);
もちろん、これはより便利で簡潔な形式でもあります(入力が少なく、繰り返しが少なく、if / elseでコードのチャンクを複製する必要がある場合にエラーの可能性を減らすことができます)。このようなきれいな「一般的なパターン」の場合:
object thing = (reference == null) ? null : reference.Thing;
...(慣れれば)読み取り/解析/理解するのは、長い間使用されているif / elseの同等のものよりも単純に高速なので、コードをより速く「グロック」するのに役立ちます。
もちろん、それが役立つからといって、それがすべての場合に使用するのに最適なものであるとは限りません。使用することで意味が明確な(またはより明確になった)短いコードにのみ使用することをお勧めし?:
ます-より複雑なコードで使用したり、三項演算子を相互にネストしたりすると、コードがひどく読みにくくなる可能性があります。