懒汉式(多线程不安全,延迟创建):
public class Singleton
{
private static Singleton instance;
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
}
饿汉式(多线程不安全,立即创建)
public class Singleton
{
private static Singleton instance = new Singleton();
private Singleton()
{
}
public static Singleton Instance
{
get => instance;
}
}
双重锁定(多线程安全,如果对象已经存在了,就不需要加锁来创建对象)
public class Singleton
{
private static Singleton instance;
private static readonly object accessLock = new object();
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (accessLock)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}