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
expression
harus 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#.