LazyInitializer Класс

Определение

Обеспечивает процедуры неактивной инициализации.Provides lazy initialization routines.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
Наследование
LazyInitializer

Примеры

В следующем примере показано, как использовать EnsureInitialized для неактивной инициализации значения с помощью логического значения, чтобы определить, была ли уже выполнена инициализация, и объект для использования в качестве взаимной блокировки исключения.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)  
ExpensiveData _data = null;  
bool _dataInitialized = false;  
object _dataLock = new object();  

//  ...  
  
ExpensiveData dataToUse = LazyInitializer.EnsureInitialized(ref _data, ref _dataInitialized, ref _dataLock);  

Комментарии

Эти подпрограммы не требуют выделения выделенного экземпляра с отложенной инициализацией вместо того, чтобы использовать ссылки, чтобы гарантировать инициализацию целевых объектов при обращении к ним.These routines avoid needing to allocate a dedicated, lazy-initialization instance, instead using references to ensure targets have been initialized as they are accessed.

Методы

EnsureInitialized<T>(T)

Инициализирует целевой ссылочный тип его конструктором типа без параметров, если он еще не инициализирован.Initializes a target reference type with the type's parameterless constructor if it hasn't already been initialized.

EnsureInitialized<T>(T, Boolean, Object)

Инициализирует целевой ссылочный тип или тип значения его конструктором без параметров, если он еще не инициализирован.Initializes a target reference or value type with its parameterless 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.

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, Object, Func<T>)

Инициализирует целевой ссылочный тип указанной функцией, если он еще не инициализирован.Initializes a target reference type with a specified function if it has not already been initialized.

Применяется к

Потокобезопасность

Методы LazyInitializer являются потокобезопасными и могут вызываться из нескольких потоков одновременно.The methods of LazyInitializer are thread-safe and may be called from multiple threads concurrently.

Дополнительно