以下是我所知道的处理事件的所有方法。任何其他语法都只是在玩范围。
// one
Button.Click += delegate { /* do something */ };
// two
Button.Click += delegate(object s, EventArgs e) { /* do something */ };
// three
RoutedEventHandler handler = (s, e) => { /* do something */ };
Button.Click += handler;
Button.Click -= handler;
// four
Button.Click += (s, e) => { /* do something */ };
我理解数字one
/two
基本上是相同的,除了可以在结果逻辑中使用的显式参数。我也明白这个数字three
允许我添加和删除处理程序,这非常重要。而且,我知道数字four
是数字二的简化版本。
我的问题更实际。在这两种语法之间,是否有任何理由使用一种而不是另一种,或者它们基本上是两种方法来做同样的事情?还有,你怎么知道?
// two
Button.Click += delegate(object s, EventArgs e) { /* do something */ };
// four
Button.Click += (s, e) => { /* do something */ };