Lazy用于延迟初始化,确保对象仅在首次访问Value时创建,适用于高成本、可能不用或需线程安全初始化的场景;支持三种线程安全模式,默认ExecutionAndPublication。
c#延迟初始化使用方法">
Lazy
适用于以下场景:
直接传入一个工厂函数(Func
private readonly Lazy<List<string>> _heavyList = new(() => LoadFromDatabase());
调用时只需:var data = _heavyList.Value; // 第一次调用才执行 LoadFromDatabase()
Lazy
LazyThreadSafetyMode.ExecutionAndPublication(默认):多线程下保证只初始化一次,且线程安全LazyThreadSafetyMode.PublicationOnly:允许多次初始化,但只发布第一个成功结果(轻量级,适合无副作用的工厂)LazyThreadSafetyMode.None:完全不加锁,仅限单线程场景(性能最高)例如禁用线程安全(确认是单线程):
var lazy = new Lazy<int>(() => ExpensiveCalc(), LazyThreadSafetyMode.None);</int>
常与只读属性结合,隐藏 Lazy 实现细节:
private readonly Lazy<HttpClient> _httpClient = new(() => new HttpClient());<br>public HttpClient Client => _httpClient.Value;
外部调用 obj.Client 就像普通属性,实际按需创建,干净又高效。
基本上就这些。用好 Lazy
以上就是C#如何使用Lazy类型 C#延迟初始化使用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号