5、深入探究.NET 中的委托、事件与对象生命周期管理

深入探究.NET 中的委托、事件与对象生命周期管理

1. 委托与事件的基础及优化

在.NET 编程里,委托和事件是极为关键的概念。不过,Visual Basic 自动为每个公共事件生成后台委托的机制效率欠佳。例如,当存在十个具有相同签名 NameChanged 的事件时,编译器会无谓地创建十个不同名称但语法相同的委托类型。这些委托类型会污染命名空间,增加应用程序的内存需求,还会略微降低执行速度,因为.NET 运行时首次引用某个类型时需要对其进行初始化。

为了更高效地利用事件,减少应用程序的负担,并且开发出在其他开发者眼中更“优雅”的类,建议采用 Event 关键字的替代语法,通过特定委托来定义事件。只需修改 User 类中的事件声明,而无需改动类内外的其他代码,示例如下:

' (用以下声明替换 User 类中的 Event 声明)
Public Event NameChanged As EventHandler

借助 ILDASM 工具可以发现,后台委托类型 NameChangedEventHandler 消失了,同时也解决了代码复用和性能方面的问题。

2. 事件语法建议

几乎所有.NET 对象公开的事件通常只接受两个参数:一个名为 sender Object 类型参数,代表触发事件的对象;另一个名为 e 的参数,通过其字段或属性公开事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值