深入理解委托:创建、调用与类型分析
委托的创建方式
除了常见的委托创建方式外, Delegate 类型提供了静态的 CreateDelegate 方法。使用该方法时,无需获取 MethodInfo ,只需传入两个 Type 对象(委托类型和定义目标方法的类型)以及方法名即可。若已持有 MethodInfo ,可直接使用;若仅有方法名,此方法更为便捷。
不过需要注意的是,在构建裁剪后的自包含可执行文件时,运行时通过名称选择委托目标可能会失败。
多播委托
所有委托类型都派生自 MulticastDelegate ,这意味着委托可以引用多个方法。多播委托在通知场景中很有用,当某个事件发生时,可能需要调用多个方法。
即使是非 void 返回类型的委托也派生自 MulticastDelegate ,但这在某些情况下可能不太合理。例如, Array.FindIndex 方法使用 Predicate<T> 来查找元素,若单个委托引用多个方法, FindIndex 只会接受默认行为,即执行所有方法,但忽略除最后一个方法之外的所有返回值。
多播功能可通过 Delegate 类的静态 Combine 方法实现,该方法接受两个委托并返回一个新的
超级会员免费看
订阅专栏 解锁全文
1613

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



