事件声明中的空匿名委托:潜在的缺点
在事件编程中,直接在事件声明上添加空匿名委托的常见做法如下所示,通过消除 null 的需要来简化事件引发检查:
// Deliberately empty subscriber public event EventHandler AskQuestion = delegate {};
虽然此技术解决了特定问题,但必须考虑潜在的缺点:
另一种方法是利用处理空检查并简化事件引发的扩展方法,而不是依赖空委托:
public static void Raise(this EventHandler handler, object sender, EventArgs e) { if(handler != null) { handler(sender, e); } }
使用此扩展,事件引发变得毫不费力并减少空检查开销:
// Works, even for null events. MyButtonClick.Raise(this, EventArgs.Empty);
这种基于扩展的解决方案消除了与事件声明中匿名空委托相关的性能和维护缺陷。
以上是您应该在事件声明中使用空的匿名委托吗?的详细内容。更多信息请关注PHP中文网其他相关文章!