Operator ekspresi Lambda (=>) mendefinisikan ekspresi lambda

Token => telah 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 badan lambda di sisi kanan.

Contoh berikut menggunakan fitur LINQ dengan sintaks metode untuk mendemonstrasikan 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 ekspresi lambda diketik dengan kuat pada waktu kompilasi. Ketika kompiler dapat menyimpulkan tipe parameter input, seperti pada contoh sebelumnya, Anda dapat menghilangkan deklarasi tipe. Jika Anda harus 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 mendefinisikan ekspresi lambda tanpa parameter input:

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

Untuk informasi selengkapnya, lihat Ekspresi lambda.

Definisi isi ekspresi

Definisi isi ekspresi memiliki sintaks umum berikut:

member => expression;

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

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

expressionharus berupaekspresi pernyataan. Karena hasil ekspresinya dibuang, jenis pengembalian ekspresi tersebut dapat berupa jenis apa pun.

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

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

Ini adalah versi pendek 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 lebih lanjut, lihatlah Anggota ekspersi berisi.

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