Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Operator 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
voidtipe 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#.