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:

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

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

text
Geometri Dasar
24
12.566370614359172
Lulus

Mari kita bedah baris demi baris:

  1. Baris 3 (LuasPersegiPanjang): expression panjang * lebar dievaluasi dan hasilnya menjadi nilai kembalian; panggilan dengan 6 dan 4 menghasilkan 24.
  2. Baris 5 (KelilingLingkaran): konstanta Math.PI dipakai di dalam expression; 2 * π * 2 dihitung menjadi 12.566370614359172 dan dicetak penuh oleh Console.WriteLine.
  3. Baris 7 (StatusNilai): operator ternary dari bagian control flow dipakai sebagai body, sehingga method tetap satu baris meski ada keputusan di dalamnya.
  4. Baris 9 (TampilkanJudul): method berreturn type void pun boleh memakai bentuk ini; expression di sebelah => berupa panggilan Console.WriteLine yang tidak menghasilkan nilai, dan tidak perlu kata return.
  5. 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:

csharp
// 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.