LazyInitializer.EnsureInitialized 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在服务尚未初始化的情况下,初始化目标类型。
重载
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
。 如果 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,则不会进一步初始化。