Argument yang dikirim secara posisi menimbulkan dua persoalan: urutannya mudah tertukar dan maknanya tersembunyi di balik angka. Panggilan Tiket.HitungBiaya(100000, true) menyebabkan compiler menolak karena true dipetakan ke parameter kedua yang bertipe int, padahal maksud kita mengisi parameter ketiga. Named arguments menyelesaikan keduanya dengan menyebut nama parameter secara langsung di titik pemanggilan.
Sintaks Named Arguments #
Named argument ditulis dengan format namaParameter: nilai. Aturan praktisnya:
- Nama yang ditulis harus persis sama dengan nama parameter pada deklarasi method.
- Named arguments diletakkan setelah argument posisional agar urutan tetap jelas.
- Antara satu named argument dan yang lain, urutan boleh bebas karena compiler memetakan nilai berdasarkan nama, bukan posisi.
Contoh Lengkap #
Method HitungBiaya dari bab Optional Parameters kembali kita pakai dengan signature yang sama:
static class Tiket
{
public static int HitungBiaya(int hargaDasar, int jumlahPenumpang = 1, bool kelasEksekutif = false)
{
// body sama seperti bab Optional Parameters
}
}
int biaya1 = Tiket.HitungBiaya(100000, kelasEksekutif: true);
int biaya2 = Tiket.HitungBiaya(hargaDasar: 100000, jumlahPenumpang: 3);
Console.WriteLine($"Eksekutif solo: {biaya1}");
Console.WriteLine($"Grup reguler: {biaya2}");Output yang Dihasilkan:
Eksekutif solo: 150000
Grup reguler: 300000Mari kita bedah kedua panggilan tersebut:
- Baris 9 (
HitungBiaya(100000, kelasEksekutif: true)): argument pertama diisi secara posisi sehinggahargaDasarbernilai100000; named argumentkelasEksekutif: truemelompatijumlahPenumpang, yang kemudian memakai default1. Hasilnya100000 + 50000 = 150000. - Baris 10 (
HitungBiaya(hargaDasar: 100000, jumlahPenumpang: 3)): seluruh argument disebut namanya; kejelasan ini berguna saat nilai seperti3tidak langsung terbaca maknanya. - Baris 11-12: kedua hasil dicetak sesuai perhitungan pada poin pertama dan kedua.
Panggilan pertama memperlihatkan keunggulan yang tidak dimiliki argument posisional: parameter optional di tengah dapat dilewati, dan parameter terakhir tetap bisa diisi.
Kapan Named Arguments Layak Dipakai #
Tidak setiap panggilan membutuhkan nama. Kriteria berikut membantu memutuskan:
- Parameter bertipe
boolatau angka yang maknanya tidak jelas dari nilainya, misalnyatruepada method perjalanan. - Method dengan banyak parameter optional yang sebagian perlu diisi.
- Kode inti bisnis yang dibaca banyak orang, sehingga setiap nilai harus jelas asal-usulnya.