Banyak method yang body-nya hanya satu perhitungan. Menulis return, kurung kurawal, dan tiga baris untuk operasi satu baris membuat kode membengkak. C# menyediakan bentuk ringkas bernama expression-bodied member: body digantikan oleh satu expression setelah tanda panah =>.
Sintaks #
Bentuk umumnya:
tipeKembalian NamaMethod(parameter) => expression;Tanda => membaca makna “menghasilkan”. Compiler memperlakukan expression di sebelah kanan sebagai nilai yang dikembalikan, persis seperti kita menulis return expression;. Batasannya jelas: body harus berupa satu expression; statement seperti if atau loop tidak muat dalam bentuk ini.
Contoh Lengkap #
static class Geometri
{
public static double LuasPersegiPanjang(double panjang, double lebar) => panjang * lebar;
public static double KelilingLingkaran(double jariJari) => 2 * Math.PI * jariJari;
public static string StatusNilai(int nilai) => nilai >= 75 ? "Lulus" : "Remedial";
public static void TampilkanJudul() => Console.WriteLine("Geometri Dasar");
}
Geometri.TampilkanJudul();
Console.WriteLine(Geometri.LuasPersegiPanjang(6, 4));
Console.WriteLine(Geometri.KelilingLingkaran(2));
Console.WriteLine(Geometri.StatusNilai(80));Output yang Dihasilkan:
Geometri Dasar
24
12.566370614359172
LulusMari kita bedah baris demi baris:
- Baris 3 (
LuasPersegiPanjang): expressionpanjang * lebardievaluasi dan hasilnya menjadi nilai kembalian; panggilan dengan6dan4menghasilkan24. - Baris 5 (
KelilingLingkaran): konstantaMath.PIdipakai di dalam expression;2 * π * 2dihitung menjadi12.566370614359172dan dicetak penuh olehConsole.WriteLine. - Baris 7 (
StatusNilai): operator ternary dari bagian control flow dipakai sebagai body, sehingga method tetap satu baris meski ada keputusan di dalamnya. - Baris 9 (
TampilkanJudul): method berreturn typevoidpun boleh memakai bentuk ini; expression di sebelah=>berupa panggilanConsole.WriteLineyang tidak menghasilkan nilai, dan tidak perlu katareturn. - Baris 12-15: pemanggilan keempat method tidak berbeda sama sekali dengan method berbody biasa — bentuk ringkas hanya urusan penulisan, bukan urusan perilaku.
Perbandingan berdampingan membuat perbedaannya tampak:
// bentuk biasa
public static double Luas(double panjang, double lebar)
{
return panjang * lebar;
}
// bentuk expression-bodied
public static double LuasRingkas(double panjang, double lebar) => panjang * lebar;Kedua method di atas berperilaku identik; pilihlah bentuk yang membuat baris tersebut paling mudah dibaca.
Bentuk ini paling pas untuk tiga keadaan: body hanya satu perhitungan, body hanya meneruskan panggilan ke method lain, atau body berupa satu keputusan ternary. Sebaliknya, bila logika membutuhkan beberapa statement — variabel perantara, if dengan lebih dari satu cabang, atau loop — kembalilah ke bentuk biasa, karena memaksakan => justru menumpuk logika dalam satu baris yang sulit dibaca.