J'ai actuellement une page qui est déclarée comme suit:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += (o, i) =>
{
//snip
}
}
}
Je ne suis que récemment passé à .NET 3.5 à partir de la version 1.1, je suis donc habitué à écrire des gestionnaires d'événements en dehors de Page Load. Ma question est; y a-t-il des inconvénients ou des pièges de performance à surveiller lors de l'utilisation de la méthode lambda pour cela? Je le préfère, car il est certainement plus concis, mais je ne veux pas sacrifier les performances pour l'utiliser. Merci.
la source
OnInit
méthode, mais comme l'Click
événement d' un bouton sera déclenché après le chargement de la page, cet exemple convient.En termes de performances, c'est la même chose qu'une méthode nommée. Le gros problème est lorsque vous effectuez les opérations suivantes:
Il essaiera probablement de supprimer un lambda différent, en y laissant l'original. Donc, la leçon est que tout va bien à moins que vous ne souhaitiez également pouvoir supprimer le gestionnaire.
la source
-=
) une autre fonction anonyme qui a aussi un corps vide, il est essentiellement indéfini lequel des deux gestionnaires d'événements sera être supprimé, ou si l'un d'entre eux sera supprimé du tout?var event = (o, e) => doSomething(); handler += event; doSomethingElse(); handler -= event;
la source
c# EventHandler handler = null; handler = (s, e) => { MessageBox.Show("Woho"); button.Click -= handler;}
Aucune implication sur les performances que je connaisse ou que j'ai jamais rencontrée, pour autant que je sache, c'est juste un "sucre syntaxique" et se compile à la même chose que l'utilisation de la syntaxe de délégué, etc.
la source