懒惰的线程安全 Singleton(使用 LazyT)
.Net 4.0 类型 Lazy 保证线程安全对象初始化,因此这种类型可用于制作单例。
public class LazySingleton
{
private static readonly Lazy<LazySingleton> _instance =
new Lazy<LazySingleton>(() => new LazySingleton());
public static LazySingleton Instance
{
get { return _instance.Value; }
}
private LazySingleton() { }
}
使用 Lazy<T>
将确保仅在调用代码中的某个位置使用对象时才对其进行实例化。
一个简单的用法就像:
using System;
public class Program
{
public static void Main()
{
var instance = LazySingleton.Instance;
}
}