如何比使用DynamicInvoke更快地调用委托?

Day*_*Two 7 .net c# delegates .net-3.5

目前我用DynamicInvoke的很慢.仍然使用Delegate类型我怎么能直接调用Delegate没有后期绑定/ DynamicInvoke

Delegate _method;    
_method.DynamicInvoke(_args);
Run Code Online (Sandbox Code Playgroud)

谢谢.

Phi*_*eck 0

Invoke速度更快,但有点“隐藏”。来自MSDN上的Delegate类

公共语言运行时为每个委托类型提供一个 Invoke 方法,其签名与委托相同。您不必从 C#、Visual Basic 或 Visual C++ 显式调用此方法,因为编译器会自动调用它。当您想要查找委托类型的签名时,Invoke 方法在反射中非常有用。

这意味着当您创建委托类型时,Invoke编译器会添加正确的签名成员。这允许呼叫而无需经过DynamicInvoke

在 C# 中,您可以这样使用:

_method(_args);
//or
_method(typedArg1, typedArg2, andSoOn);
Run Code Online (Sandbox Code Playgroud)

像调用普通方法一样调用它。这实际上调用了Invoke,这对你来说应该快得多。