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.
Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.
Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.
Petunjuk / Saran
Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.
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 menyimpulkan jenis parameter input, seperti dalam contoh sebelumnya, Anda dapat menghilangkan deklarasi jenis. Jika Anda perlu menentukan jenis parameter input, Anda harus menentukan jenis 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 menggunakan sintaks umum berikut:
member => expression;
expression adalah ekspresi yang valid. Jenis pengembalian expression harus dapat dikonversi secara implisit ke jenis pengembalian anggota. Jika anggota:
- Memiliki
voidjenis 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
Anda tidak dapat membebani operator secara => berlebihan.
Spesifikasi bahasa C#
Untuk informasi selengkapnya tentang operator lambda, lihat bagian Ekspresi fungsi anonim dari spesifikasi bahasa C#.