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 delegate membuat metode anonim yang dapat Anda konversi ke jenis delegasi.
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#.
Anda dapat mengonversi metode anonim ke jenis seperti System.Action dan System.Func<TResult>. Banyak metode menggunakan jenis ini sebagai argumen.
Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4)); // output: 7
Nota
Ekspresi Lambda memberikan cara yang lebih ringkas dan ekspresif untuk membuat fungsi anonim. Gunakan operator => untuk membuat ekspresi lambda:
Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4)); // output: 7
Untuk informasi selengkapnya tentang fitur ekspresi lambda, seperti menangkap variabel luar, lihat Ekspresi Lambda.
Saat menggunakan delegate operator, Anda dapat menghilangkan daftar parameter. Jika Anda menghilangkan daftar parameter, Anda membuat metode anonim yang dapat Anda konversi ke jenis delegasi dengan daftar parameter apa pun, seperti yang ditunjukkan contoh berikut:
Action greet = delegate { Console.WriteLine("Hello!"); };
greet();
Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);
// Output:
// Hello!
// This is world!
Fungsionalitas ini adalah satu-satunya fitur metode anonim yang tidak didukung ekspresi lambda. Dalam semua kasus lain, gunakan ekspresi lambda untuk menulis kode sebaris. Anda dapat menggunakan buang untuk menentukan dua parameter input atau lebih dari metode anonim yang tidak digunakan metode:
Func<int, int, int> constant = delegate (int _, int _) { return 42; };
Console.WriteLine(constant(3, 4)); // output: 42
Untuk kompatibilitas mundur, jika hanya satu parameter bernama _, pengompilasi memperlakukan _ sebagai nama parameter tersebut dalam metode anonim.
Gunakan pengubah static saat Anda mendeklarasikan metode anonim:
Func<int, int, int> sum = static delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(10, 4)); // output: 14
Metode anonim statis tidak dapat menangkap variabel lokal atau status instans dari cakupan penutup.
delegate Gunakan kata kunci untuk mendeklarasikan jenis delegasi.
Pengkompilasi dapat menyimpan cache objek delegasi yang dibuatnya dari grup metode. Pertimbangkan metode berikut:
static void StaticFunction() { }
Saat Anda menetapkan grup metode ke delegasi, pengkompilasi menyimpan cache delegasi:
Action a = StaticFunction;
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian ekspresi fungsi Anonim dari spesifikasi bahasa C#.