没有并发的情况下使用单例:
public sealed class Singleton { private static Singleton l_singleton; public static Singleton GetSingleton() { if(l_singleton==null) { l_singleton = new Singleton(); } return l_singleton; } }
有并发的情况下,可以使用下面的单例:
public sealed class Singleton { private static Singleton l_singleton; private readonly static object l_obj = new object(); public static Singleton GetSingleton() { if(l_singleton==null) { lock(l_obj) { if(l_singleton==null) { l_singleton = new Singleton(); } } } return l_singleton; } }