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
。
如果多個執行緒同時存取此方法,可能會建立 的 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
時的互斥鎖定。 如果 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,則不會進一步初始化。