关于静态构造函数

程序如下所示

    class Program
    {
        static void Main(string[] args)
        {

            1、 Singleton.getInstance();

            2、Singleton s = new Singleton();
            Console.ReadLine();
        }
    }

public  class Singleton
    {
        private static int instance;
        public Singleton()
        {
            Console.WriteLine("no static Singleton");
        }
        static Singleton()
        {
            Console.WriteLine("static Singleton");
        }
        public static void getInstance()
        {
            if (instance == 0)
            {
                instance = instance+1;
            }
            Console.WriteLine( instance+"");
        }
    }

1、 Singleton.getInstance();此时程序会先执行静态构造函数,再调用getInstance()方法,程序会先输出“static Singleton” 再输出“1”

2、Singleton s = new Singleton();
此时调先执行 静态构造函数,再调用非静态构造函数,最后调用getInstance()方法,输出“static Singleton” 再输出“no static Singleton”最后输出“1”

注:静态构造函数只执行一次,当子类多次实例化时候,父类的静态构造函数只执行一次,父类的非静态构造函数则会多次执行。

原文地址:https://www.cnblogs.com/yidianfeng/p/2262904.html