delegate.Invoke是如何工作的?

Mon*_*ong 10 .net c# delegates invoke

如果我在我的代码中创建一个委托,如:

delegate void dostuff (string o);
Run Code Online (Sandbox Code Playgroud)

这产生派生从一个类System.MulticastDelegate,它实现三个方法- Invoke,BeginInvokeEndInvoke.

如果我看一下所编译的IL,Invoke我看到的是:

.method public hidebysig newslot virtual 
        instance void  Invoke(string o) runtime managed
{
} // end of method dostuff::Invoke
Run Code Online (Sandbox Code Playgroud)

该方法不包含代码.调用它确实有效 - 委托被调用,但我看不出它是如何做到的.

调用Invoke实际调用委托的伏都教来自哪里?

Eth*_*iac 7

伏都教可以在签名结束时找到:runtime managed.请注意,您定义的所有托管类和方法都将被装饰为cli managed.

runtime managed 表示运行时提供方法的预优化实现.