Lazy<T>.IsValueCreated 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得值,指出某個值是否已經建立這個 Lazy<T> 執行個體。
public:
property bool IsValueCreated { bool get(); };
public bool IsValueCreated { get; }
member this.IsValueCreated : bool
Public ReadOnly Property IsValueCreated As Boolean
屬性值
如果已為這個 Lazy<T> 執行個體建立了值,則為 true
;否則為 false
。
備註
當實例發生 Lazy<T> 延遲初始化時,可能會導致建立值或擲回例外狀況。 如果擲回例外狀況,實例的 Lazy<T> 後續行為取決於例外狀況快取是否有效。
Lazy<T>如果實例是使用未指定初始化函式的建構函式所建立,則例外狀況快取不會生效。 後續嘗試初始化 Lazy<T> 可能會成功,而且在成功初始化之後, IsValueCreated 屬性會傳 true
回 。
Lazy<T>如果實例是以建構函式的 參數 Lazy<T> 所指定 valueFactory
() 建立,則例外狀況快取是由執行緒安全模式所控制。
如果模式為 LazyThreadSafetyMode.ExecutionAndPublication 或 LazyThreadSafetyMode.None ,則沒有第二次機會初始化 Lazy<T> 實例。 如果發生例外狀況且在初始化函式中未處理,則會在屬性的後續存取 Lazy<T>.Value 時快取並重新擲回該例外狀況。 如果擲回例外狀況,則不會建立任何值,因此在這種情況下會 IsValueCreated 傳
false
回 。如果模式為 LazyThreadSafetyMode.PublicationOnly ,則第一個成功執行初始化函式的執行緒 (或無參數建構函式) 建立 實例的值 Lazy<T> 。 如果初始化函式在一個執行緒上擲回例外狀況,其他執行緒仍然可以嘗試初始化 Lazy<T> 實例。 在建立值之前,屬性會 IsValueCreated 傳
false
回 。