如果我在代码中创建一个委托,例如:
delegate void dostuff (string o);
这会生成一个派生自的类System.MulticastDelegate
它实现了三种方法 -Invoke
, BeginInvoke
and EndInvoke
.
如果我查看编译后的 ILInvoke
我所看到的是:
.method public hidebysig newslot virtual
instance void Invoke(string o) runtime managed
{
} // end of method dostuff::Invoke
该方法不包含任何代码。调用它确实有效 - 委托被调用,但我看不到它是如何做到的。
使得调用 Invoke 实际上调用 delegate 的巫毒从何而来?
伏都教可以在签名的末尾找到:runtime managed
。请注意,您定义的所有托管类和方法都将被装饰为cli managed
.
runtime managed
意味着运行时提供了方法的预先优化的实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)