【发布时间】:2010-06-12 12:55:38
【问题描述】:
我不明白为什么我们在定义事件时需要“event”关键字,而我们可以不使用“event”关键字来做同样的事情,而只需使用委托。
例如
public delegate void CustomEventHandler(int a, string b);
public event CustomEventHandler customEvent;
customEvent += new CustomEventHandler(customEventHandler);
customEvent(1,"a"); // Raising the event
如果我从第二行中删除“event”关键字,那么我也可以通过调用委托来引发事件。谁能告诉我为什么需要这个事件关键字?
【问题讨论】:
-
好的,如果你不使用 event 关键字,任何可以使用类对象访问该事件的人都可以将其设置为 NULL,例如 objClass.SelectedIndexChanged = null。这将使您的底层代码崩溃。 event 关键字强制用户使用 += 分配类似于委托的内容。