Sebuah method penjumlahan mungkin dipanggil dengan dua angka hari ini, tiga angka besok, dan sepuluh angka minggu depan. Membuat satu overload untuk setiap jumlah jelas tidak praktis. Kata kunci params menyelesaikannya: parameter terakhir method menampung sejumlah argument yang dikirim pemanggil, dan compiler membungkus argument-argument itu menjadi array secara otomatis.
Aturan params #
- Ditulis
params tipe[] nama, misalnyaparams int[] daftarHarga. - Hanya boleh ada satu parameter
paramsper method, dan harus diletakkan paling akhir. - Pemanggil boleh mengirim nol, satu, atau banyak argument; semuanya masuk ke satu array.
- Argument array juga boleh dikirim langsung, bila datanya sudah berbentuk array.
Contoh Lengkap #
static class Nota
{
public static int HitungTotal(params int[] daftarHarga)
{
int total = 0;
foreach (int harga in daftarHarga)
{
total += harga;
}
return total;
}
}
Console.WriteLine(Nota.HitungTotal());
Console.WriteLine(Nota.HitungTotal(12000));
Console.WriteLine(Nota.HitungTotal(12000, 8000, 5000));Output yang Dihasilkan:
0
12000
25000Mari kita bedah ketiga panggilan tersebut:
- Baris 14 (
HitungTotal()): tanpa argument, compiler membuat array kosong; loopforeachtidak menjalankan badannya dantotaltetap0. - Baris 15 (
HitungTotal(12000)): compiler membuat array berisi satu elemen, sehingga hasilnya12000. - Baris 16 (
HitungTotal(12000, 8000, 5000)): compiler membuat array tiga elemen;foreachmenjumlahkannya menjadi25000.
Perhatikan bahwa method di atas tidak menulis kode pembuatan array sama sekali. Perbandingan array yang diteruskan secara manual — Nota.HitungTotal(daftar) bila daftar sudah bertipe int[] — juga valid dan menghasilkan perilaku yang sama.
Bila sebuah nama method punya beberapa overload, compiler memilih bentuk tanpa params terlebih dahulu bila ada yang cocok persis; params menjadi pilihan terakhir. Aturan ini mencegah panggilan biasa terpecah menjadi array tanpa alasan.
Sintaks int[] adalah array, materi yang dibahas lengkap pada section Array dan String. Untuk bab ini cukup dipahami bahwa array adalah wadah berurutan, dan params memakainya sebagai sarana menampung argument.
Kombinasi dengan Parameter Biasa #
Parameter wajib boleh mendahului params, dan pola ini sering dipakai:
public static int HitungLaporan(string judul, params int[] nilai)Pemanggil HitungLaporan("Penjualan", 100, 200, 300) mengisi judul secara posisi, lalu tiga angka sisanya masuk ke nilai.