两者之间最大的区别之一是您可以轻松取消订阅活动.使用基于方法的方法取消订阅是一个简单的操作,只需使用原始方法
m_button.Click += OnButtonClick;
...
m_button.Click -= OnButtonClick;
Run Code Online (Sandbox Code Playgroud)
对于lambdas来说,这不是那么简单.您必须存储lambda表达式,并在以后用于取消事件
m_button.Click += delegate { Console.Write("here"); }
...
// Fail
m_button.Click -= delegate { Console.Write("here"); }
EventHandler del = delegate { Console.Write("here"); }
m_button.Click += del;
...
m_button.Click -= del;
Run Code Online (Sandbox Code Playgroud)
它确实减少了使用lambda表达式的便利性.