Delegate类的用例

时间:2013-03-19 13:57:03

标签: c# delegates

由于MulticastDelegate是.NET的委托代表类,我想问一下,是否有使用Delegate类的用例?

我的意思是如果我有一个Delegate类型的变量和另一个MulticastDelegate类型的变量,将调用不同的方法覆盖(例如GetInvocationList)但是如果每个单程序员都定义了委托继承自MulticastDelegate使用Delegate类可能是什么意思?

如果我认为没有,那么不应该用ObsoleteAttribute标记并使用MulticastDelegate代替评论吗?

或者不应该编译器以静默方式将“Delegate variable1;”更改为“MulticastDelegate variable1;”?

1 个答案:

答案 0 :(得分:4)

它没有过时,我认为没有理由这样做。

如果Delegate提供了您需要的唯一成员,为什么要使用MulticastDelegate

根据我的经验,Delegate在.NET API中作为“任何委托”而不是MulticastDelegate更常出现。例如:

这绝对只​​是由于历史意外导致这两个类都存在,但是没有理由弃用Delegate的使用。

另外,你写道:

  

我的意思是如果我有一个Delegate类型的变量和另一个MulticastDelegate类型的变量,将调用不同的方法重载(例如GetInvocationList)

不,GetInvocationList没有超载。它是MulticastDelegate中的overridden,但没有超载。哦,请注意该方法的返回类型 - 它是Delegate[],而不是MulticastDelegate[]