5

我想了解 JIT 内联是多么普遍。

假设在我的代码中,我从说System.IO程序集中调用某个函数,并将回调引用传递给在我的代码中实现的函数,以便从该函数内部System.IO调用。在我的函数中有GetCallingAssembly()调用。因此,如果我的回调被内联到最初在我的代码中System.IO的调用中,并且打算说“当前”方法是从内部调用的,则会说它现在是从我的代码内部调用的。GetCallingAssembly()System.IO

这种内联是可能的,还是 .NET 运行时程序集的处理方式不同,因此不允许将用户代码 JIT 内联到 .NET 运行时代码中?

4

1 回答 1

3

您可以放心地假设回调不会被内联。.NET Framework 程序集总是在安装时由 ngen.exe 预先设置,之后无法更改该代码。此外,即使抖动优化器可以推断出委托的目标方法可能是什么,通过委托的回调也永远不会内联。

于 2012-10-01T13:02:07.993 回答