В настоящее время у меня есть страница, которая объявлена следующим образом:
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//snip
MyButton.Click += (o, i) =>
{
//snip
}
}
}
Я только недавно перешел на .NET 3.5 с 1.1, поэтому я привык писать обработчики событий вне Page_Load. У меня вопрос; есть ли какие-либо недостатки в производительности или подводные камни, на которые следует обратить внимание при использовании лямбда-метода для этого? Я предпочитаю его, поскольку он, безусловно, более лаконичен, но я не хочу жертвовать производительностью, чтобы использовать его. Спасибо.
источник
OnInit
методу, но посколькуClick
событие кнопки будет вызвано после загрузки страницы, этот пример подходит.По производительности это то же самое, что и именованный метод. Большая проблема возникает, когда вы делаете следующее:
Вероятно, он попытается удалить другую лямбду, оставив исходную. Итак, урок состоит в том, что это нормально, если вы также не хотите удалить обработчик.
источник
-=
) другую анонимную функцию, которая также имеет пустое тело, по существу не определено, какой из двух обработчиков событий будет будут удалены, или будут ли они удалены вообще?var event = (o, e) => doSomething(); handler += event; doSomethingElse(); handler -= event;
источник
c# EventHandler handler = null; handler = (s, e) => { MessageBox.Show("Woho"); button.Click -= handler;}
Никаких последствий для производительности, о которых я знаю или когда-либо сталкивался, насколько я знаю, это просто "синтаксический сахар" и компилируется до того же уровня, что и использование синтаксиса делегата и т. Д.
источник