深入探究.NET 中的委托、事件与对象生命周期管理
1. 委托与事件的基础及优化
在.NET 编程里,委托和事件是极为关键的概念。不过,Visual Basic 自动为每个公共事件生成后台委托的机制效率欠佳。例如,当存在十个具有相同签名 NameChanged 的事件时,编译器会无谓地创建十个不同名称但语法相同的委托类型。这些委托类型会污染命名空间,增加应用程序的内存需求,还会略微降低执行速度,因为.NET 运行时首次引用某个类型时需要对其进行初始化。
为了更高效地利用事件,减少应用程序的负担,并且开发出在其他开发者眼中更“优雅”的类,建议采用 Event 关键字的替代语法,通过特定委托来定义事件。只需修改 User 类中的事件声明,而无需改动类内外的其他代码,示例如下:
' (用以下声明替换 User 类中的 Event 声明)
Public Event NameChanged As EventHandler
借助 ILDASM 工具可以发现,后台委托类型 NameChangedEventHandler 消失了,同时也解决了代码复用和性能方面的问题。
2. 事件语法建议
几乎所有.NET 对象公开的事件通常只接受两个参数:一个名为 sender 的 Object 类型参数,代表触发事件的对象;另一个名为 e 的参数,通过其字段或属性公开事
超级会员免费看
订阅专栏 解锁全文
902

被折叠的 条评论
为什么被折叠?



