Obecnie mam następującą stronę zadeklarowaną:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += (o, i) =>
{
//snip
}
}
}
Dopiero niedawno przeniosłem się na .NET 3.5 z 1.1, więc jestem przyzwyczajony do pisania programów obsługi zdarzeń poza Page_Load. Moje pytanie brzmi; Czy są jakieś wady wydajności lub pułapki, na które powinienem uważać, używając do tego metody lambda? Wolę to, ponieważ jest na pewno bardziej zwięzłe, ale nie chcę poświęcać wydajności, aby go używać. Dzięki.
c#
performance
events
lambda
Christopher Garcia
źródło
źródło
OnInit
metodzie, ale ponieważClick
zdarzenie przycisku zostanie zgłoszone po załadowaniu strony, ten przykład jest w porządku.Pod względem wydajności jest to to samo, co nazwana metoda. Duży problem występuje, gdy wykonujesz następujące czynności:
Prawdopodobnie spróbuje usunąć inną lambdę, pozostawiając tam oryginalną. Lekcja jest taka, że wszystko jest w porządku, chyba że chcesz również mieć możliwość usunięcia modułu obsługi.
źródło
-=
) inną anonimową funkcję, która również ma puste ciało, zasadniczo nie jest zdefiniowane, który z dwóch programów obsługi zdarzeń będzie być usunięte, czy w ogóle którykolwiek z nich zostanie usunięty?var event = (o, e) => doSomething(); handler += event; doSomethingElse(); handler -= event;
źródło
c# EventHandler handler = null; handler = (s, e) => { MessageBox.Show("Woho"); button.Click -= handler;}
Brak implikacji wydajnościowych, o których jestem świadomy lub kiedykolwiek się z nimi spotkałem, o ile wiem, że to po prostu „cukier składniowy” i kompiluje się do tego samego, co użycie składni delegata itp.
źródło