LazyInitializer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Обеспечивает процедуры инициализации адаптирующегося типа.
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) |
Инициализирует целевой ссылочный тип его конструктором типа без параметров, если он еще не инициализирован. |
EnsureInitialized<T>(T, Boolean, Object) |
Инициализирует целевой ссылочный тип или тип значения его конструктором без параметров, если он еще не инициализирован. |
EnsureInitialized<T>(T, Boolean, Object, Func<T>) |
Инициализирует целевой ссылочный тип или тип значения с использованием указанной функцией, если он еще не инициализирован. |
EnsureInitialized<T>(T, Func<T>) |
Инициализирует целевой ссылочный тип с использованием указанной функцией, если он еще не инициализирован. |
EnsureInitialized<T>(T, Object, Func<T>) |
Инициализирует целевой ссылочный тип указанной функцией, если он еще не инициализирован. |
Применяется к
Потокобезопасность
Методы LazyInitializer являются потокобезопасными и могут вызываться из нескольких потоков одновременно.