C# 为什么委托类型派生自MulticastDelegate类?为什么它不直接派生自委托类?

C# 为什么委托类型派生自MulticastDelegate类?为什么它不直接派生自委托类?,c#,.net,delegates,multicastdelegate,C#,.net,Delegates,Multicastdelegate,关于代理类型,我有一个非常基本的问题。我在对象浏览器中比较了Delegate和MulticastDelegate类的成员,在MulticastDelegate中找不到任何新的额外成员。我还注意到委托类有GetInvocationList虚拟方法。因此,我假设委托类应该能够保存对多个方法的引用。如果我的假设是正确的,我想知道为什么不直接从委托类派生自定义委托类型,而不是从MulticastDelegate类派生自定义委托类型。不知道我在这里错过了什么。请帮助我理解其中的区别。基本上,委托和多播委托

关于代理类型,我有一个非常基本的问题。我在对象浏览器中比较了Delegate和MulticastDelegate类的成员,在MulticastDelegate中找不到任何新的额外成员。我还注意到委托类有GetInvocationList虚拟方法。因此,我假设委托类应该能够保存对多个方法的引用。如果我的假设是正确的,我想知道为什么不直接从委托类派生自定义委托类型,而不是从MulticastDelegate类派生自定义委托类型。不知道我在这里错过了什么。请帮助我理解其中的区别。

基本上,
委托
多播委托
的分割是出于历史原因。最初会有不能合并的代表和可以。。。但这并不是一个有用的区别。显然,只有在将
MulticastDelegate
从框架/CLR中剥离出来时,才发现了这一点

通过C#从CLR,第三版:

System.MulticastDelegate类派生自System.Delegate,后者本身派生自System.Object。有两个代表班的原因是历史和不幸的;FCL中应该只有一个委托类。遗憾的是,您需要了解这两个类,因为即使您创建的所有委托类型都将MulticastDelegate作为基类,您偶尔也会使用委托类而不是MulticastDelegate类定义的方法来操作委托类型。[……]

欺骗: