LazyInitializer.EnsureInitialized Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует целевой тип, если он еще не инициализирован.
Перегрузки
EnsureInitialized<T>(T) |
Инициализирует целевой ссылочный тип его конструктором типа без параметров, если он еще не инициализирован. |
EnsureInitialized<T>(T, Func<T>) |
Инициализирует целевой ссылочный тип с использованием указанной функцией, если он еще не инициализирован. |
EnsureInitialized<T>(T, Boolean, Object) |
Инициализирует целевой ссылочный тип или тип значения его конструктором без параметров, если он еще не инициализирован. |
EnsureInitialized<T>(T, Object, Func<T>) |
Инициализирует целевой ссылочный тип указанной функцией, если он еще не инициализирован. |
EnsureInitialized<T>(T, Boolean, Object, Func<T>) |
Инициализирует целевой ссылочный тип или тип значения с использованием указанной функцией, если он еще не инициализирован. |
EnsureInitialized<T>(T)
Инициализирует целевой ссылочный тип его конструктором типа без параметров, если он еще не инициализирован.
public:
generic <typename T>
where T : class static T EnsureInitialized(T % target);
public static T EnsureInitialized<T> (ref T target) where T : class;
public static T EnsureInitialized<T> (ref T? target) where T : class;
static member EnsureInitialized : 'T -> 'T (requires 'T : null)
Public Shared Function EnsureInitialized(Of T As Class) (ByRef target As T) As T
Параметры типа
- T
Тип инициализируемой ссылки.
Параметры
- target
- T
Ссылка, которую необходимо инициализировать, если она еще не инициализирована. Если это параметр null
, тип считается неинициализированным; в противном случае тип считается инициализированным.
Возвращаемое значение
- T
Инициализированный объект.
Исключения
Разрешения на доступ к конструктору типа T
отсутствовали.
У типа T
нет конструктора без параметров.
Комментарии
Этот метод может использоваться только для ссылочных типов. Чтобы обеспечить инициализацию типов значений, см. другие перегрузки EnsureInitialized
.
Этот метод может использоваться одновременно несколькими потоками для инициализации target
.
В случае одновременного доступа к этому методу нескольких потоков может быть создано несколько экземпляров T
, но только один из них будет сохранен target
и возвращен. В таком случае этот метод не удаляет объекты, которые не были сохранены. Если такие объекты должны быть удалены, используйте перегрузку, которая принимает valueFactory
и удаляет объект, если он не ссылается на тот же сохраненный объект.
См. также раздел
Применяется к
EnsureInitialized<T>(T, Func<T>)
Инициализирует целевой ссылочный тип с использованием указанной функцией, если он еще не инициализирован.
public:
generic <typename T>
where T : class static T EnsureInitialized(T % target, Func<T> ^ valueFactory);
public static T EnsureInitialized<T> (ref T target, Func<T> valueFactory) where T : class;
public static T EnsureInitialized<T> (ref T? target, Func<T> valueFactory) where T : class;
static member EnsureInitialized : 'T * Func<'T (requires 'T : null)> -> 'T (requires 'T : null)
Public Shared Function EnsureInitialized(Of T As Class) (ByRef target As T, valueFactory As Func(Of T)) As T
Параметры типа
- T
Тип инициализируемой ссылки.
Параметры
- target
- T
Ссылка, которую необходимо инициализировать, если она еще не инициализирована.
- valueFactory
- Func<T>
Функция, которая вызывается для инициализации ссылки.
Возвращаемое значение
- T
Инициализированный объект.
Исключения
У типа T
нет конструктора без параметров.
valueFactory
вернул значение NULL (Nothing в Visual Basic).
Комментарии
Этот метод может использоваться только для ссылочных типов и valueFactory
не может возвращать пустую ссылку (Nothing в Visual Basic). Чтобы обеспечить инициализацию типов значений или разрешить ссылочные типы NULL, см. другие перегрузки EnsureInitialized.
Этот метод может использоваться одновременно несколькими потоками для инициализации target
.
В случае одновременного доступа к этому методу нескольких потоков может быть создано несколько экземпляров T
, но в них будет храниться target
только один поток. В таком случае этот метод не удаляет объекты, которые не были сохранены. Если такие объекты должны быть удалены, вызывающий объект должен определить, не использовался ли объект, а затем соответствующим образом удалить объект.
См. также раздел
Применяется к
EnsureInitialized<T>(T, Boolean, Object)
Инициализирует целевой ссылочный тип или тип значения его конструктором без параметров, если он еще не инициализирован.
public:
generic <typename T>
static T EnsureInitialized(T % target, bool % initialized, System::Object ^ % syncLock);
public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object syncLock);
public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object? syncLock);
static member EnsureInitialized : 'T * bool * obj -> 'T
Public Shared Function EnsureInitialized(Of T) (ByRef target As T, ByRef initialized As Boolean, ByRef syncLock As Object) As T
Параметры типа
- T
Тип инициализируемой ссылки.
Параметры
- target
- T
Ссылка или значение типа T
, которое необходимо инициализировать, если оно еще не инициализировано.
- initialized
- Boolean
Ссылка на логическое значение, определяющее, инициализирована ли цель.
- syncLock
- Object
Ссылка на объект, используемый как взаимоисключающая блокировка для инициализации параметра target
. Если syncLock
равно null
, то нового объект будет создан экземпляр.
Возвращаемое значение
- T
Инициализированный объект.
Исключения
Разрешения на доступ к конструктору типа T
отсутствовали.
У типа T
нет конструктора без параметров.
Комментарии
Если initialized
задано значение true, то дальнейшая инициализация не возникает.
См. также раздел
Применяется к
EnsureInitialized<T>(T, Object, Func<T>)
Инициализирует целевой ссылочный тип указанной функцией, если он еще не инициализирован.
public:
generic <typename T>
where T : class static T EnsureInitialized(T % target, System::Object ^ % syncLock, Func<T> ^ valueFactory);
public static T EnsureInitialized<T> (ref T? target, ref object? syncLock, Func<T> valueFactory) where T : class;
public static T EnsureInitialized<T> (ref T target, ref object syncLock, Func<T> valueFactory) where T : class;
static member EnsureInitialized : 'T * obj * Func<'T (requires 'T : null)> -> 'T (requires 'T : null)
Public Shared Function EnsureInitialized(Of T As Class) (ByRef target As T, ByRef syncLock As Object, valueFactory As Func(Of T)) As T
Параметры типа
- T
Тип инициализируемой ссылки.
Параметры
- target
- T
Ссылка, которую необходимо инициализировать, если она еще не инициализирована. Если это параметр null
, тип считается неинициализированным; в противном случае тип считается инициализированным.
- syncLock
- Object
Ссылка на объект, используемый как взаимоисключающая блокировка для инициализации параметра target
. Если syncLock
равно null
, то нового объект будет создан экземпляр.
- valueFactory
- Func<T>
Метод, который необходимо вызвать для инициализации target
.
Возвращаемое значение
- T
Инициализированный объект.
Применяется к
EnsureInitialized<T>(T, Boolean, Object, Func<T>)
Инициализирует целевой ссылочный тип или тип значения с использованием указанной функцией, если он еще не инициализирован.
public:
generic <typename T>
static T EnsureInitialized(T % target, bool % initialized, System::Object ^ % syncLock, Func<T> ^ valueFactory);
public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object syncLock, Func<T> valueFactory);
public static T EnsureInitialized<T> (ref T target, ref bool initialized, ref object? syncLock, Func<T> valueFactory);
static member EnsureInitialized : 'T * bool * obj * Func<'T> -> 'T
Public Shared Function EnsureInitialized(Of T) (ByRef target As T, ByRef initialized As Boolean, ByRef syncLock As Object, valueFactory As Func(Of T)) As T
Параметры типа
- T
Тип инициализируемой ссылки.
Параметры
- target
- T
Ссылка или значение типа T
, которое необходимо инициализировать, если оно еще не инициализировано.
- initialized
- Boolean
Ссылка на логическое значение, определяющее, инициализирована ли цель.
- syncLock
- Object
Ссылка на объект, используемый как взаимоисключающая блокировка для инициализации параметра target
. Если syncLock
равно null
, то нового объект будет создан экземпляр.
- valueFactory
- Func<T>
Функция, которая вызывается для инициализации ссылки или значения.
Возвращаемое значение
- T
Инициализированный объект.
Исключения
Разрешения на доступ к конструктору типа T
отсутствовали.
У типа T
нет конструктора без параметров.
Комментарии
Если initialized
задано значение true, то дальнейшая инициализация не возникает.