Vij*_*jay 4 .net c# delegates multicastdelegate
关于委托类型,我有一个非常基本的问题.我在对象浏览器中比较了Delegate和MulticastDelegate类的成员,我在MulticastDelegate中找不到任何新的附加成员.我还注意到Delegate类有GetInvocationList虚方法.所以我假设Delegate类应该能够保存对多个方法的引用.如果我的假设是正确的,我想知道为什么自定义委托类型不直接派生自Delegate类而不是MulticastDelegate类.不知道我在这里缺少什么.请帮我理解其中的区别.
Jon*_*eet 10
基本上是分裂Delegate和MulticastDelegate历史原因.最初会有一些无法合并的代表和那些可以......但结果不是一个有用的区别的代表.显然,只有当它MulticastDelegate从框架/ CLR中扯掉时才会被发现.
从CLR到C#,第3版:
System.MulticastDelegate类派生自System.Delegate,它本身派生自System.Object.有两个代表类的原因是历史和不幸的; FCL中应该只有一个委托类.遗憾的是,您需要了解这两个类,因为即使您创建的所有委托类型都将MulticastDelegate作为基类,您偶尔也会使用Delegate类而不是MulticastDelegate类定义的方法来操作您的委托类型.[...]