由于MulticastDelegate是.NET的统治委托类,我想问一下,有没有使用Delegate类的用例?
我的意思是,如果我有一个类型为Delegate的变量和另一个类型为MulticastDelegate的变量,将会调用不同的方法覆盖(例如GetInvocationList),但是如果每个单一程序员定义的委托都继承自MulticastDelegate,那么使用Delegate类有什么意义呢?
如果像我假设的那样没有,那么是否应该用带注释的ObsoleteAttribute标记为使用MulticastDelegate呢?
或者编译器不应该默默地将"Delegate variable1;“改为"MulticastDelegate variable1;”吗?
发布于 2013-03-19 22:00:06
它并没有过时,我也看不出有什么理由这样标记它。
如果您需要的唯一成员是由Delegate提供的,为什么还要使用MulticastDelegate
根据我的经验,在.NET应用编程接口中,Delegate作为“任何委托”出现的次数要比MulticastDelegate多得多。例如:
LambdaExpression.CompileControl.Invoke这两个类都存在肯定是由于历史上的偶然,但这并不是反对只使用Delegate的理由。
此外,您还需要编写:
我的意思是,如果我有一个委托类型的变量和另一个MulticastDelegate类型的变量,就会调用不同的方法重载(例如GetInvocationList)
不,GetInvocationList没有超载。它是MulticastDelegate中的,但不会超载。哦,注意那个方法的返回类型-它是Delegate[],而不是MulticastDelegate[]。
https://stackoverflow.com/questions/15501491
复制相似问题