Lazy是C#中实现延迟初始化的泛型类,仅在首次访问Value属性时创建实例,支持线程安全模式控制,适用于高开销或非必需对象的按需加载。
的用法 - 实现延迟初始化">
Lazy
使用 Lazy
LazylazyObject = new Lazy (() => new ExpensiveObject()); // 此时并未创建实例 // ...
// 第一次访问 Value 时才会创建 ExpensiveObject obj = lazyObject.Value; // 实例化发生在这里
只有第一次调用 Value 属性时,内部的工厂函数才会执行,之后的所有访问都会返回同一个缓存实例。
Lazy
// 禁用线程安全 var lazyNoSync = new Lazy(() => new ExpensiveObject(), LazyThreadSafetyMode.None);
常见于以下情况:
库连接或文件读取器,避免提前占用资源。
public class ServiceManager
{
private readonly Lazy _logger = new Lazy(() => new Logger("log.txt"));
public Logger GetLogger()
{
return _logger.Value; // 需要时才创建日志器
}}
基本上就这些。Lazy