JIT内联是否可以将我的代码内联到某些.NET运行时汇编代码中?

时间:2012-10-01 08:48:22

标签: c# .net reflection jit

我想了解JIT内联无处不在。

假设在我的代码中,我调用了来自System.IO程序集的函数,并将回调引用传递给我的代码中实现的函数,以便从System.IO函数内部调用。在我的函数中GetCallingAssembly()调用了System.IO。因此,如果我的回调被内联到GetCallingAssembly(),那么System.IO的调用最初是在我的代码中,而且是为了说明"当前"从{{1}}内部调用的方法会说现在从我的代码中调用它。

是否可以进行此类内联,或者是否对.NET运行时程序集进行了不同的处理,以便不允许将用户代码内联到.NET运行时代码中?

1 个答案:

答案 0 :(得分:3)

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