LazyInitializer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供懶惰的初始化例程。
public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
- 繼承
-
LazyInitializer
範例
以下範例示範如何使用 EnsureInitialized 來懶惰地初始化值,使用布林值追蹤初始化是否已完成,並使用物件作為互斥鎖。
Dim _data As ExpensiveData = Nothing
Dim _dataInitialized As Boolean = False
Dim _dataLock As Object = Nothing
' ...
Dim name = LazyInitializer.EnsureInitialized(_data, _dataInitialized, _dataLock)
ExpensiveData _data = null;
bool _dataInitialized = false;
object _dataLock = new object();
// ...
ExpensiveData dataToUse = LazyInitializer.EnsureInitialized(ref _data, ref _dataInitialized, ref _dataLock);
備註
這些例程避免了需要分配專用的懶惰初始化實例,而是利用參考來確保目標在存取時已被初始化。
方法
| 名稱 | Description |
|---|---|
| EnsureInitialized<T>(T, Boolean, Object, Func<T>) |
如果目標參考或值類型尚未被初始化,則會使用指定的函式來初始化。 |
| EnsureInitialized<T>(T, Boolean, Object) |
如果目標參考或值類型尚未初始化,則用其無參數建構器初始化。 |
| EnsureInitialized<T>(T, Func<T>) |
如果目標參考型別尚未初始化,則會使用指定的函式初始化。 |
| EnsureInitialized<T>(T, Object, Func<T>) |
若目標參考類型尚未初始化,則會用指定函式初始化該類型。 |
| EnsureInitialized<T>(T) |
如果目標參考類型尚未初始化,則使用該型別的無參數建構子初始化該類型。 |
適用於
執行緒安全性
這些 LazyInitializer 方法對執行緒安全,可以同時從多個執行緒呼叫。