有人可以解释一下行动与c#中的事件有何不同吗?

时间:2015-11-17 12:08:33

标签: c# .net wpf xaml

有人可以解释一下在c#中使用动作和事件之间的区别吗?

1 个答案:

答案 0 :(得分:1)

简而言之:Action是一个回调/委托。一个事件是多播回调/委托。因此,虽然Action只能调用一个处理程序,但事件可以有多个处理程序。

<强>事件样品:

// Subscribe
MyEvent += MyMethod1;
MyEvent += MyMethod2;

// Unsubscribe
MyEvent -= MyMethod1;
MyEvent -= MyMethod2;

如果事件MyEvent被引发/调用,则会调用两个方法(MyMethod1和MyMethod2)。您不能使用+ =运算符来执行操作。

<强>动作-样品:

MyAction = MyMethod3;

动作主要用于某些本地回调机制。例如,接受类型Action<>的参数。如果某个操作应该有结果,则可以使用Func<>代替Action<>。两者都适用于接受Lambda的API。

如果一个类暴露了一些一般的“回调”,它们应该作为常规事件公开。