Delegate
完成与函数指针相同的工作。它可以被视为托管世界的函数指针。它只是表示要调用的函数的地址,以及要调用其方法的特定对象。
很多时候,我将术语Delegate
与术语Event
一起阅读,但我看不出它们之间的关系。 Event
是特定类型的委托(delegate)吗?
最佳答案
简答:参见 my article on the topic .更长的答案:
事件是委托(delegate)之上的一种模式。它们是 publisher/subscriber 的实现模式(又名 observer pattern ),使用委托(delegate)作为表示订阅的方式。
当你看到类似的东西时:
public event EventHandler Foo;
你应该考虑两种方法:
public void AddFooHandler(EventHandler handler) { ... }
public void RemoveFooHandler(EventHandler handler) { ... }
外部客户所能做的就是订阅和取消订阅。特别是,客户端不能自己引发事件(没有为此目的提供单独的方法),也不能“替换”或删除其他订阅。
关于c# - 委托(delegate)和事件之间的关系是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9487053/