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;
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;
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 (Ничего в Visual Basic).

Комментарии

Этот метод может использоваться только для ссылочных типов, и valueFactory не может возвращать пустую ссылку (Ничего в 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);
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;
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);
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, то дальнейшая инициализация не возникает.

См. также раздел

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