Actualmente tengo una página que se declara de la siguiente manera:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += (o, i) =>
{
//snip
}
}
}
Recientemente me mudé a .NET 3.5 desde 1.1, por lo que estoy acostumbrado a escribir controladores de eventos fuera de Page_Load. Mi pregunta es; ¿Hay algún inconveniente de rendimiento o trampas que deba tener en cuenta al usar el método lambda para esto? Lo prefiero, ya que ciertamente es más conciso, pero no quiero sacrificar el rendimiento para usarlo. Gracias.
fuente
OnInit
método, pero dado que elClick
evento de un botón se generará después de que se cargue la página, este ejemplo está bien.En cuanto al rendimiento, es lo mismo que un método con nombre. El gran problema es cuando haces lo siguiente:
Probablemente intentará eliminar una lambda diferente, dejando la original allí. Entonces, la lección es que está bien a menos que también desee poder eliminar el controlador.
fuente
-=
) otra función anónima que también tiene un cuerpo vacío, es esencialmente indefinido cuál de los dos controladores de eventos eliminarse, o si alguno de ellos se eliminará en absoluto?var event = (o, e) => doSomething(); handler += event; doSomethingElse(); handler -= event;
fuente
c# EventHandler handler = null; handler = (s, e) => { MessageBox.Show("Woho"); button.Click -= handler;}
No hay implicaciones de rendimiento de las que tenga conocimiento o que alguna vez me haya encontrado, por lo que sé, es solo "azúcar sintáctico" y se compila de la misma manera que el uso de sintaxis delegada, etc.
fuente