方法订阅vs lambda委托订阅 - 哪个以及为什么?

Jim*_*ffa 5 .net c# lambda delegates

我看到有些人倾向于将方法交给回调/事件,然后有时只是把他们交给lambdas.

谁能说出两者之间的差异?我原本以为它们是相同的,但是我所看到的不一致有时让我想知道是否有一个比另一个更好的情况?显然,如果有大量代码,它不应该是现场lambda,否则..

您是否可以概述两者之间的任何差异(如果有),并概述您在两者可用时选择的规则?

Jar*_*Par 7

两者之间最大的区别之一是您可以轻松取消订阅活动.使用基于方法的方法取消订阅是一个简单的操作,只需使用原始方法

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表达式的便利性.