Atualmente, tenho uma página que é declarada da seguinte forma:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += (o, i) =>
{
//snip
}
}
}
Mudei recentemente para .NET 3.5 do 1.1, então estou acostumado a escrever manipuladores de eventos fora do Page_Load. Minha pergunta é; Há alguma desvantagem de desempenho ou armadilha que devo observar ao usar o método lambda para isso? Eu prefiro, pois certamente é mais conciso, mas não quero sacrificar o desempenho para usá-lo. Obrigado.
c#
performance
events
lambda
Christopher Garcia
fonte
fonte
OnInit
método, mas como oClick
evento de um botão será gerado após o carregamento da página, este exemplo é adequado.Em termos de desempenho, é o mesmo que um método nomeado. O grande problema é quando você faz o seguinte:
Ele provavelmente tentará remover um lambda diferente, deixando o original lá. Portanto, a lição é que está tudo bem, a menos que você também queira remover o manipulador.
fonte
-=
) outra função anônima que também tem um corpo vazio, é essencialmente indefinido qual dos dois manipuladores de eventos irá ser removido, ou se algum deles será removido?var event = (o, e) => doSomething(); handler += event; doSomethingElse(); handler -= event;
fonte
c# EventHandler handler = null; handler = (s, e) => { MessageBox.Show("Woho"); button.Click -= handler;}
Nenhuma implicação de desempenho que eu conheça ou que já tenha encontrado, até onde eu sei, é apenas "açúcar sintático" e compila para a mesma coisa que usar sintaxe delegada, etc.
fonte