我深入阅读了一些有关委托的内容,令人困惑的是具有一种方法的委托可能与多播委托不同。然而,通过反射,您可以清楚地看到,即使只有一个方法,委托也确实派生自MulticastDelegate
, 并不是立即地源自于Delegate
object.
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();
}
}
Output:MulticastDelegate
我意识到一个MulticastDelegate
包含一个调用列表Delegate
对象。我想知道是否可以创建一个Delegate
直接,如果这样做有什么好处,除了打电话GetInvocationList()
并提取Delegate
单独的对象。
并不真地。所有 .NET 委托均派生自MulticastDelegate
。当 .NET 首次编写时,单播和多播之间最初存在区别,但在发布之前这种区别已被删除。但是,底层类型并未合并为一个。
你无法从中得出Delegate
直接在 C# 中。您也许可以使用原始 IL,但这并没有多大意义,因为MulticastDelegate
对于所有意图和目的来说,就像单播委托一样运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)