我写过这样的课程:
class Singleton
{
private Singleton()
{
Console.WriteLine("Initialized.");
Singleton.num++;
}
public static uint num;
private static Singleton instance = new Singleton();
public static Singleton Instance
{
get { return Singleton.instance; }
private set { }
}
}
在我的主要方法中,如果我这样写:
Console.WriteLine("====================");
Singleton s = Singleton.Instance;
Console.WriteLine("====================");
//Console.WriteLine(Singleton.num);
我得到了一个输出:
====================
Initialized.
====================
但如果我取消注释最后一行,我会得到这样的输出:
Initialized.
====================
====================
1
为什么构造函数在第二种情况下的任何进程之前都被标记了?为什么最后一行会影响以前的程序?