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 (在 Visual Basic 中為 Nothing)。

備註

這個方法只能用於參考型別,而且 valueFactory 可能不會在 Visual Basic) 中傳回 Null 參考 (Nothing。 若要確保實值型別的初始化或允許 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 時的互斥鎖定。 如果 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,則不會進一步初始化。

另請參閱

適用於