LazyInitializer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供延迟初始化例程。
public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
- 继承
-
LazyInitializer
示例
以下示例演示如何使用 EnsureInitialized 使用布尔值来延迟初始化值,以跟踪初始化是否已发生,以及要用作相互排除锁的对象。
Dim _data As ExpensiveData = Nothing
Dim _dataInitialized As Boolean = False
Dim _dataLock As Object = Nothing
' ...
Dim name = LazyInitializer.EnsureInitialized(_data, _dataInitialized, _dataLock)
ExpensiveData _data = null;
bool _dataInitialized = false;
object _dataLock = new object();
// ...
ExpensiveData dataToUse = LazyInitializer.EnsureInitialized(ref _data, ref _dataInitialized, ref _dataLock);
注解
这些例程避免需要分配专用延迟初始化实例,而是使用引用来确保在访问目标时已初始化目标。
方法
| 名称 | 说明 |
|---|---|
| EnsureInitialized<T>(T, Boolean, Object, Func<T>) |
使用指定的函数初始化目标引用或值类型(如果尚未初始化)。 |
| EnsureInitialized<T>(T, Boolean, Object) |
如果尚未初始化目标引用或值类型,则使用其无参数构造函数初始化目标引用或值类型。 |
| EnsureInitialized<T>(T, Func<T>) |
如果尚未初始化目标引用类型,则使用指定的函数初始化目标引用类型。 |
| EnsureInitialized<T>(T, Object, Func<T>) |
使用指定的函数初始化目标引用类型(如果尚未初始化)。 |
| EnsureInitialized<T>(T) |
使用该类型的无参数构造函数初始化目标引用类型(如果尚未初始化)。 |
适用于
线程安全性
LazyInitializer方法是线程安全的,可以同时从多个线程调用。