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)

Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs

使用该类型的无参数构造函数初始化目标引用类型(如果尚未初始化)。

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>)

Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs

如果尚未初始化目标引用类型,则使用指定的函数初始化目标引用类型。

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 中无任何内容)。

注解

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

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

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

另请参阅

适用于

EnsureInitialized<T>(T, Boolean, Object)

Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs

如果尚未初始化目标引用或值类型,则使用其无参数构造函数初始化目标引用或值类型。

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>)

Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs

使用指定的函数初始化目标引用类型(如果尚未初始化)。

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>)

Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs
Source:
LazyInitializer.cs

使用指定的函数初始化目标引用或值类型(如果尚未初始化)。

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,则不会进一步初始化。

另请参阅

适用于