Bagikan melalui


Operator ekspresi Lambda (=>) mendefinisikan ekspresi lambda

Token => didukung dalam dua bentuk: sebagai operator lambda dan sebagai pemisah nama anggota dan implementasi anggota dalam definisi isi ekspresi.

Operator Lambda

Dalam ekspresi lambda, operator => lambda memisahkan parameter input di sisi kiri dari bodi lambda di sisi kanan.

Contoh berikut menggunakan fitur LINQ dengan sintaks metode untuk menunjukkan penggunaan ekspresi lambda:

string[] words = { "bot", "apple", "apricot" };
int minimalLength = words
  .Where(w => w.StartsWith("a"))
  .Min(w => w.Length);
Console.WriteLine(minimalLength);   // output: 5

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (interim, next) => interim * next);
Console.WriteLine(product);   // output: 280

Parameter input dari ekspresi lambda di-tipkan secara kuat pada waktu kompilasi. Ketika pengkompilasi dapat menyimpulkan jenis parameter input, seperti dalam contoh sebelumnya, Anda dapat menghilangkan deklarasi jenis. Jika Anda perlu menentukan jenis parameter input, Anda harus melakukannya untuk setiap parameter, seperti yang ditunjukkan contoh berikut:

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
Console.WriteLine(product);   // output: 280

Contoh berikut menunjukkan cara menentukan ekspresi lambda tanpa parameter input:

Func<string> greet = () => "Hello, World!";
Console.WriteLine(greet());

Untuk informasi selengkapnya, lihat Ekspresi Lambda.

Definisi tubuh ekspresi

Definisi isi ekspresi memiliki sintaks umum berikut:

member => expression;

Di mana expression adalah ekspresi yang valid. Jenis pengembalian expression harus dapat dikonversi secara implisit ke jenis pengembalian anggota. Jika anggota:

  • Memiliki void tipe pengembalian atau
  • Adalah:
    • Pembangun
    • Finalizer
    • Pengakses properti atau pengindeks set

expression harus berupa ekspresi pernyataan. Karena hasil ekspresi dibuang, jenis pengembalian ekspresi tersebut dapat berupa jenis apa pun.

Contoh berikut menunjukkan definisi isi ekspresi untuk Person.ToString metode:

public override string ToString() => $"{fname} {lname}".Trim();

Ini adalah versi singkat dari definisi metode berikut:

public override string ToString()
{
   return $"{fname} {lname}".Trim();
}

Anda dapat membuat definisi isi ekspresi untuk metode, operator, properti baca-saja, konstruktor, finalizer, dan pengakses properti dan pengindeks. Untuk informasi selengkapnya, lihat Anggota bertubuh ekspresi.

Kelebihan beban operator

Operator => tidak dapat kelebihan beban.

Spesifikasi bahasa C#

Untuk informasi selengkapnya tentang operator lambda, lihat bagian Ekspresi fungsi anonim dari spesifikasi bahasa C#.

Lihat juga