有人可以解释一下在c#中使用动作和事件之间的区别吗?
答案 0 :(得分:1)
简而言之:Action是一个回调/委托。一个事件是多播回调/委托。因此,虽然Action只能调用一个处理程序,但事件可以有多个处理程序。
<强>事件样品:强>
// Subscribe
MyEvent += MyMethod1;
MyEvent += MyMethod2;
// Unsubscribe
MyEvent -= MyMethod1;
MyEvent -= MyMethod2;
如果事件MyEvent被引发/调用,则会调用两个方法(MyMethod1和MyMethod2)。您不能使用+ =运算符来执行操作。
<强>动作-样品:强>
MyAction = MyMethod3;
动作主要用于某些本地回调机制。例如,接受类型Action<>
的参数。如果某个操作应该有结果,则可以使用Func<>
代替Action<>
。两者都适用于接受Lambda的API。
如果一个类暴露了一些一般的“回调”,它们应该作为常规事件公开。