class MyClass
{
private MyClass(){}
private static MyClass instance;
public static MyClass Instance
{
get
{
return instance=instance??new MyClass();
}
}
}
答案 0 :(得分:5)
我个人认为singleton is an anti-pattern。
那说:
您的代码不安全,因为
return instance = instance ?? new MyClass();
不是原子的。
Lazy<T>
负责处理有关单例类创建的许多问题。
所以:
public class MyClass
{
public static MyClass Instance
{
get
{
return instanceLazy.Value;
}
}
private static Lazy<MyClass> instanceLazy =
new Lazy<MyClass>(() => new MyClass());
private MyClass()
{
}
}