小编Ah *_*eow的帖子

什么时候在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 { }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的主要方法中,如果我这样写:

        Console.WriteLine("====================");
        Singleton s = Singleton.Instance;
        Console.WriteLine("====================");
        //Console.WriteLine(Singleton.num);
Run Code Online (Sandbox Code Playgroud)

我有一个输出像:

====================
Initialized.
====================
Run Code Online (Sandbox Code Playgroud)

但如果我取消注释最后一行,我会得到这样的输出:

Initialized.
====================
====================
1
Run Code Online (Sandbox Code Playgroud)

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

c#

5
推荐指数
0
解决办法
66
查看次数

标签 统计

c# ×1