程序如下所示
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”
注:静态构造函数只执行一次,当子类多次实例化时候,父类的静态构造函数只执行一次,父类的非静态构造函数则会多次执行。