我正在尝试制作一个简短的 C# 片段来说明由于MSDN 中概述Assembly.GetCallingAssembly()
的 JIT 内联而导致的行为变化。到目前为止,这是我的代码:
class Program
{
static void Main(string[] args)
{
Console.WriteLine( GetAssembly().FullName );
Console.ReadLine();
}
static Assembly GetAssembly()
{
return System.Reflection.Assembly.GetCallingAssembly();
}
}
我在“Release”中构建并开始使用“Start without Debugging” - 此设置使此答案中的代码产生内联。我看到的结果是
ConsoleApplication2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
所以很明显GetAssembly()
没有内联到Main()
,否则我会看到mscorlib
调用程序集。
我已经查看了所有内联标准,但我不明白为什么GetAssembly()
不内联。
是否有可能知道为什么 JIT 编译器决定不内联调用?