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:
kondisi ? nilaiJikaBenar : nilaiJikaSalahCompiler 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 #
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:
Lulus
Ongkir: 0Mari kita telaah baris demi baris:
- Baris 1 (
nilaiUjian): Variabel menyimpan skor ujian sebesar78. - Baris 2 (
string status = ...): KondisinilaiUjian >= 75bernilaitrue, sehingga cabang"Lulus"yang dipilih dan disimpan ke variabelstatus. - Baris 5-6 (
ongkir): Total belanja180000memenuhi syarat minimal150000, sehingga ongkir bernilai0, bukan20000.
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:
int jam = 10;
Console.WriteLine(jam < 12 ? "Selamat pagi" : "Selamat siang");Output yang Dihasilkan:
Selamat pagiKondisi 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:
string kategori = nilaiUjian >= 90 ? "Sangat Baik" : nilaiUjian >= 75 ? "Baik" : "Perlu Latihan";
Console.WriteLine(kategori);Output yang Dihasilkan:
BaikKondisi pertama nilaiUjian >= 90 bernilai false karena 78, sehingga evaluasi pindah ke ternary kedua; kondisi nilaiUjian >= 75 bernilai true, dan kategori menjadi "Baik".