Saat ini saya memiliki halaman yang dinyatakan sebagai berikut:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += (o, i) =>
{
//snip
}
}
}
Saya baru saja pindah ke .NET 3.5 dari 1.1, jadi saya terbiasa menulis penangan acara di luar Page_Load. Pertanyaanku adalah; apakah ada kekurangan atau kekurangan performa yang harus saya perhatikan saat menggunakan metode lambda untuk ini? Saya lebih suka, karena pasti lebih ringkas, tapi saya tidak ingin mengorbankan performa untuk menggunakannya. Terima kasih.
sumber
OnInit
metode, tetapi karena peristiwa tombolClick
akan dimunculkan setelah halaman dimuat, contoh ini baik-baik saja.Dari segi kinerja, ini sama dengan metode bernama. Masalah besarnya adalah saat Anda melakukan hal berikut:
Ini mungkin akan mencoba untuk menghapus lambda yang berbeda, meninggalkan yang asli di sana. Jadi pelajarannya adalah baik-baik saja kecuali jika Anda juga ingin bisa melepaskan penangannya.
sumber
-=
) fungsi anonim lain yang juga memiliki badan kosong, pada dasarnya tidak ditentukan mana dari dua penangan kejadian yang akan dihapus, atau apakah ada yang akan dihapus sama sekali?var event = (o, e) => doSomething(); handler += event; doSomethingElse(); handler -= event;
sumber
c# EventHandler handler = null; handler = (s, e) => { MessageBox.Show("Woho"); button.Click -= handler;}
Tidak ada implikasi kinerja yang saya sadari atau pernah temui, sejauh yang saya tahu itu hanya "gula sintaksis" dan mengkompilasi ke hal yang sama seperti menggunakan sintaks delegasi, dll.
sumber