解决在事件声明中添加匿名空委托的缺点
虽然在事件声明中添加匿名空委托的做法具有以下好处:避免空检查,引发对其潜力的担忧
性能注意事项
与担忧相反,使用空事件订阅者不会带来明显的性能影响。调用空委托相关的开销很小,不太可能显着影响应用程序性能。
维护头痛
空事件订阅者的使用相对不常见,这意味着对于未来的维护者来说,这可能不会立即显而易见。但是,使用描述性命名约定和代码文档可以帮助缓解这一潜在问题。
替代方法:使用扩展方法进行空检查缓解
而不是依赖空事件对于订阅者,另一种方法是使用封装空检查的扩展方法。这种方法具有以下优点:
示例
可以定义以下扩展方法来处理空事件检查:
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中文网其他相关文章!