. net单委托与多播委托
本文关键字:多播 单委托 net | 更新日期: 2023-09-27 18:10:49
我一直在深入阅读一些关于委托的内容,令人困惑的是,具有一种方法的委托可能与多播委托不同。然而,通过反射,您可以清楚地看到,即使只有一个方法,委托确实是从MulticastDelegate
派生的,而不是立即从Delegate
对象派生的。
class Program
{
public delegate void MyDelegate();
static void SomeMethod()
{
}
static void Main(string[] args)
{
MyDelegate del = null;
del = new MyDelegate(SomeMethod);
Console.WriteLine(del.GetType().BaseType.Name);
Console.ReadKey();
}
}
输出:MulticastDelegate
我意识到MulticastDelegate
包含Delegate
对象的调用列表。我想知道是否有可能直接创建单个Delegate
,以及这样做是否有任何优势,而不是单独调用GetInvocationList()
并提取Delegate
对象。
不完全是。所有。net委托都派生自MulticastDelegate
。当。net刚开始编写时,单个&多播,但是这个区别在发布之前就被去掉了。但是,基础类型没有合并为一个。
在c#中不能直接从Delegate
派生。您可能能够在原始IL中,但没有太多意义,因为MulticastDelegate
的操作就像所有意图和目的的单播委托。