Tidak semua keputusan membutuhkan blok if-else yang lengkap. Memilih label “Lulus” atau “Tidak Lulus” dari satu kondisi, atau menghitung ongkir gratis berdasarkan total belanja, adalah keputusan dua jalur sederhana. Operator ternary (?:) menyediakan bentuk ringkasnya dalam satu expression. Operator ini satu-satunya operator di C# yang memakai tiga operand, dan dari jumlah operand itulah nama ternary berasal.

Struktur dan Cara Kerja #

Bentuk umum operator ternary:

csharp
kondisi ? nilaiJikaBenar : nilaiJikaSalah

Compiler mengevaluasi kondisi terlebih dahulu. Bila kondisi bernilai true, hanya cabang pertama yang dievaluasi dan hasilnya dipakai; bila bernilai false, hanya cabang kedua yang dievaluasi. Sama seperti && dan ||, cabang yang tidak terpilih tidak dijalankan sama sekali.

Contoh dan Bedah Baris #

csharp
int nilaiUjian = 78;
string status = nilaiUjian >= 75 ? "Lulus" : "Tidak Lulus";
Console.WriteLine(status);

int totalBelanja = 180000;
int ongkir = totalBelanja >= 150000 ? 0 : 20000;
Console.WriteLine($"Ongkir: {ongkir}");

Output yang Dihasilkan:

text
Lulus
Ongkir: 0

Mari kita telaah baris demi baris:

  1. Baris 1 (nilaiUjian): Variabel menyimpan skor ujian sebesar 78.
  2. Baris 2 (string status = ...): Kondisi nilaiUjian >= 75 bernilai true, sehingga cabang "Lulus" yang dipilih dan disimpan ke variabel status.
  3. Baris 5-6 (ongkir): Total belanja 180000 memenuhi syarat minimal 150000, sehingga ongkir bernilai 0, bukan 20000.

Kedua contoh menunjukkan pola yang sama: variabel di sisi kiri = menerima hasil ternary, dan hasil itu ditentukan oleh satu kondisi bool. Ternary menghasilkan nilai, sehingga penugasan menjadi tempat pemakaian yang paling natural bagi operator ini.

Hasil ternary juga boleh dipakai langsung sebagai argumen method tanpa variabel perantara:

csharp
int jam = 10;
Console.WriteLine(jam < 12 ? "Selamat pagi" : "Selamat siang");

Output yang Dihasilkan:

text
Selamat pagi

Kondisi jam < 12 bernilai true, sehingga string "Selamat pagi" langsung diteruskan ke Console.WriteLine.

Ternary Bersarang #

Cabang ternary boleh berisi ternary lain. Pola ini memungkinkan tiga kategori sekaligus dalam satu expression:

csharp
string kategori = nilaiUjian >= 90 ? "Sangat Baik" : nilaiUjian >= 75 ? "Baik" : "Perlu Latihan";
Console.WriteLine(kategori);

Output yang Dihasilkan:

text
Baik

Kondisi pertama nilaiUjian >= 90 bernilai false karena 78, sehingga evaluasi pindah ke ternary kedua; kondisi nilaiUjian >= 75 bernilai true, dan kategori menjadi "Baik".