Ini cukup banyak tercakup oleh jawaban lain, tetapi "itu adalah ekspresi" tidak benar-benar menjelaskan mengapa itu sangat berguna ...
Dalam bahasa seperti C ++ dan C #, Anda dapat menentukan bidang hanya baca lokal (dalam badan metode) menggunakannya. Ini tidak mungkin dilakukan dengan pernyataan if / then konvensional karena nilai bidang hanya baca harus ditetapkan dalam pernyataan tunggal tersebut:
readonly int speed = (shiftKeyDown) ? 10 : 1;
tidak sama dengan:
readonly int speed;
if (shifKeyDown)
speed = 10; // error - can't assign to a readonly
else
speed = 1; // error
Dengan cara yang sama Anda bisa menyematkan ekspresi tersier di kode lain. Selain membuat kode sumber lebih ringkas (dan dalam beberapa kasus lebih mudah dibaca), ini juga dapat membuat kode mesin yang dihasilkan lebih ringkas dan efisien:
MoveCar((shiftKeyDown) ? 10 : 1);
... mungkin menghasilkan lebih sedikit kode daripada harus memanggil metode yang sama dua kali:
if (shiftKeyDown)
MoveCar(10);
else
MoveCar(1);
Tentu saja, ini juga bentuk yang lebih nyaman dan ringkas (lebih sedikit mengetik, lebih sedikit pengulangan, dan dapat mengurangi kemungkinan kesalahan jika Anda harus menduplikasi potongan kode di if / else). Dalam kasus "pola umum" bersih seperti ini:
object thing = (reference == null) ? null : reference.Thing;
... itu hanya lebih cepat untuk membaca / parse / memahami (setelah Anda terbiasa) daripada bertele-tele jika / lain setara, sehingga dapat membantu Anda untuk 'grok' kode lebih cepat.
Tentu saja, hanya karena berguna tidak berarti itu adalah hal terbaik untuk digunakan dalam setiap kasus. Saya menyarankan hanya menggunakannya untuk potongan kode pendek di mana artinya jelas (atau dibuat lebih jelas) dengan menggunakan ?:
- jika Anda menggunakannya dalam kode yang lebih kompleks, atau menyarangkan operator terner satu sama lain, itu dapat membuat kode sangat sulit untuk dibaca .