什么时候在C#中初始化静态字段?

时间:2015-07-16 08:00:11

标签: c#

我写过这样的课程:

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

为什么构造函数在第二种情况下的任何进程之前都被标记了?为什么最后一行会影响以前的程序?

0 个答案:

没有答案