多播委托方法的增加和移除
2024-10-15
26
什么是多播委托?
委托都是继承自多播委托MulticastDelegate,一个委托包含多个方法称之为多播委托。
+=给委托示例增加方法,形成方法链,如图所示,多播委托会顺序执行方法。
-= 给委托示例移除方法,从方法链尾部开始匹配,遇到第一个完全吻合的方法就移除且只移除一个,没有的话不会异常。
决定一个方法是否完全匹配,由两个因素决定,第一个是method,第二个是target。
所以如果是method += new DelegateTest().ShowName;增加的方法也无法通过method -= new DelegateTest().ShowName;移除,因为他们的对象Target不是同一个。
lambda表达式无法移除,method不同,不同的lambda表达式会被编译器生成不同的方法。
更新于:1个月前赞一波!
文章评论
评论问答