Method tanpa masukan hanya dapat mengerjakan hal yang sama setiap kali dipanggil, dan method tanpa keluaran memaksa logika lanjutan ditulis di tempat lain. Parameter dan return value melengkapi method menjadi unit yang benar-benar dapat dipakai ulang: data masuk lewat parameter, hasil keluar lewat return. Kedua sisi ini membentuk kontrak yang wajib dipenuhi oleh method dan pemanggilnya.
Parameter: Kontrak Masukan #
Parameter dideklarasikan pada parameter list lengkap dengan tipenya. Dua istilah berikut perlu dibedakan sejak awal:
- Parameter: nama variabel yang tertulis di deklarasi method, misalnya
hargadanpersenpadaHitungDiskon(int harga, int persen). - Argument: nilai nyata yang dikirim saat pemanggilan, misalnya
150000dan20padaKasir.HitungDiskon(150000, 20).
Argument diisi berurutan: argument pertama masuk ke parameter pertama, argument kedua masuk ke parameter kedua, dan seterusnya.
Return Value: Kontrak Keluaran #
Return type pada deklarasi menjanjikan tipe hasil yang dikirim method. Statement return nilai; mengirim nilai tersebut sekaligus mengakhiri eksekusi method pada baris itu; baris lain setelahnya di dalam body tidak dijalankan. Method dengan return type void tidak mengirim nilai, tetapi boleh memakai return; tanpa nilai untuk berhenti lebih awal.
Contoh Lengkap #
static class Kasir
{
public static int HitungDiskon(int harga, int persen)
{
int potongan = harga * persen / 100;
return potongan;
}
public static void CetakStruk(string nama, int bayar)
{
Console.WriteLine($"Struk untuk {nama}, jumlah bayar {bayar}");
}
}
int potongan = Kasir.HitungDiskon(150000, 20);
Console.WriteLine($"Diskon: {potongan}");
Kasir.CetakStruk("Budi", 150000 - potongan);Output yang Dihasilkan:
Diskon: 30000
Struk untuk Budi, jumlah bayar 120000Mari kita bedah baris demi baris:
- Baris 3 (
HitungDiskon(int harga, int persen)): method menuntut dua masukan bertipeint; compiler menolak pemanggilan yang argument-nya tidak cocok. - Baris 5: argument
150000mengisihargadan20mengisipersen; perhitungan menghasilkan30000. - Baris 6 (
return potongan;): nilai30000dikirim ke pemanggil dan eksekusi method berakhir. - Baris 9 (
CetakStruk): return typevoidberarti method ini hanya menampilkan teks dan tidak mengirim apa pun kembali. - Baris 15: hasil kembalian disimpan ke variabel
potongan. - Baris 17: hasil
HitungDiskondipakai di dalam expression150000 - potongan, lalu dikirim kembali sebagai argument untuk method lain.
Satu method boleh memiliki beberapa statement return — misalnya satu per cabang kondisi — tetapi setiap jalur eksekusi harus mengirim nilai yang cocok dengan return type. Compiler memeriksa kontrak ini saat kompilasi, sehingga lupa return pada method bertipe int langsung terdeteksi sebelum program berjalan.