我发现静态字段初始化可以表现不同。 对于以下代码来说,
public class Class1
{
public static void Main()
{
Console.WriteLine("Main");
Test();
Console.ReadLine();
}
public static void Test(){
Console.WriteLine("Test");
Singleton.Instance.DoSomething();
}
}
public class Singleton
{
private static Singleton sInstance = new Singleton();
protected Singleton()
{
Console.WriteLine("Singleton Constructor");
}
public static Singleton Instance
{
get
{
return sInstance;
}
}
public void DoSomething(){}
}
在调试构造中,它将打印
Main
Test
Singleton Constructor
发行时, 将打印
Main
Singleton Constructor
Test
I checked the IL code generated of these 2 builds, there are nearly the same.
我想知道这是怎么发生的?如果这是在释放结构中的一种JIT优化,那么动机是什么?