LazyInitializer Class
Provides lazy initialization routines.
Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)
| Name | Description | |
|---|---|---|
![]() ![]() ![]() ![]() | EnsureInitialized<T>(T) | Initializes a target reference type with the type's default constructor if it hasn't already been initialized. |
![]() ![]() ![]() ![]() | EnsureInitialized<T>(T, Func<T>) | Initializes a target reference type by using a specified function if it hasn't already been initialized. |
![]() ![]() ![]() ![]() | EnsureInitialized<T>(T, Boolean, Object) | Initializes a target reference or value type with its default constructor if it hasn't already been initialized. |
![]() ![]() ![]() ![]() | EnsureInitialized<T>(T, Boolean, Object, Func<T>) | Initializes a target reference or value type by using a specified function if it hasn't already been initialized. |
These routines avoid needing to allocate a dedicated, lazy-initialization instance, instead using references to ensure targets have been initialized as they are accessed.
Note |
|---|
The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: Synchronization | ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes. |
The following example demonstrates how to use EnsureInitialized to lazily initialize a value using a Boolean value to track whether initialization has already happened and an object to use as the mutual exclusion lock.
Dim _data As ExpensiveData = Nothing Dim _dataInitialized As Boolean = False Dim _dataLock As Object = Nothing ' ... Dim name = LazyInitializer.EnsureInitialized(_data, _dataInitialized, _dataLock)
[C#]
ExpensiveData _data = null;
bool _dataInitialized = false;
object _dataLock = new object();
// ...
ExpensiveData dataToUse = LazyInitializer.EnsureInitialized(ref _data, ref _dataInitialized, ref _dataLock);
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.




Note