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 harga dan persen pada HitungDiskon(int harga, int persen).
  • Argument: nilai nyata yang dikirim saat pemanggilan, misalnya 150000 dan 20 pada Kasir.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 #

csharp
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:

text
Diskon: 30000
Struk untuk Budi, jumlah bayar 120000

Mari kita bedah baris demi baris:

  1. Baris 3 (HitungDiskon(int harga, int persen)): method menuntut dua masukan bertipe int; compiler menolak pemanggilan yang argument-nya tidak cocok.
  2. Baris 5: argument 150000 mengisi harga dan 20 mengisi persen; perhitungan menghasilkan 30000.
  3. Baris 6 (return potongan;): nilai 30000 dikirim ke pemanggil dan eksekusi method berakhir.
  4. Baris 9 (CetakStruk): return type void berarti method ini hanya menampilkan teks dan tidak mengirim apa pun kembali.
  5. Baris 15: hasil kembalian disimpan ke variabel potongan.
  6. Baris 17: hasil HitungDiskon dipakai di dalam expression 150000 - 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.