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

如果多个线程同时访问此方法,可以创建多个实例,但只存储target其中一个实例T并返回。 在这种情况下,此方法不会释放未存储的对象。 如果必须释放此类对象,请使用重载, 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(在 Visual Basic 中为 Nothing)。

注解

此方法只能用于引用类型,并且valueFactory不能返回 null 引用 (Visual Basic) 中无任何内容。 若要确保值类型初始化或允许 null 引用类型,请参阅 EnsureInitialized 的其他重载。

此方法可由多个线程并发使用以初始化 target

如果多个线程同时访问此方法,可以创建多个实例,但只存储target一个实例T。 在这种情况下,此方法不会释放未存储的对象。 如果必须释放此类对象,则由调用方决定对象是否未使用,然后适当释放对象。

另请参阅

适用于

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。 如果 syncLocknull,则新的对象将被实例化。

返回

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。 如果 syncLocknull,则新的对象将被实例化。

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。 如果 syncLocknull,则新的对象将被实例化。

valueFactory
Func<T>

调用函数以初始化该引用或值。

返回

T

已初始化的对象。

例外

缺少访问类型 T 的构造函数的权限。

T 类型没有无参数构造函数。

注解

如果 initialized 指定为 true,则不会进一步初始化。

另请参阅

适用于