事件是一种特殊的委托的实例,或者说是受限制的委托,是委托一种特殊应用,在类的外部只能施加+=,-=操作符,二者本质上是一个东西。
我们知道委托和事件都可以用来调用跟自己方法签名一样的方法。容易混淆大家的地方大多在于这两者之间的区别。从我们使用委托delegate和事件event上的主要有两大区别(如表1所示)

event只允许用add, remove方法来操作,这导致了它不允许在类的外部被直接触发,只能在类的内部适合的时机触发
事件的作用
- 封装订阅: 事件将委托的订阅操作进行封装,仅允许 += 和 -= 操作,避免程序员在开发时因误用 = 使得委托链断裂
- 封装发布: 事件确保只有包含它类才能触发事件通知,杜绝在委托中出现的“订阅者”也能触发
class ClassC
{
public delegate void Say();
public static event Say Say_EventHandler;
private int myVar;//这个字段,只是纯粹用来用用Say_EventHandler用的,没有别的用处。
public int MyProperty
{
get {return myVar;}
set {
myVar = value;
if(Say_EventHandler!=null)
{
Say_EventHandler();
}
}
}
}参考:
https://blog.csdn.net/boiled_water123/article/details/83021161
版权声明:本文为sinat_31608641原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。