次の方法で共有


LazyInitializer クラス

定義

遅延初期化ルーチンを提供します。

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);  

注釈

これらのルーチンでは、専用の遅延初期化インスタンスを割り当てる必要がなくなります。代わりに、参照を使用してターゲットがアクセス時に初期化されていることを確認します。

メソッド

EnsureInitialized<T>(T)

まだ初期化されていない場合、型のパラメーターなしのコンストラクターを使用してターゲット参照型を初期化します。

EnsureInitialized<T>(T, Boolean, Object)

まだ初期化されていない場合、そのパラメーターなしのコンストラクターを使用してターゲット参照または値の型を初期化します。

EnsureInitialized<T>(T, Boolean, Object, Func<T>)

まだ初期化されていない場合、指定された関数を使用することでターゲット参照または値の型を初期化します。

EnsureInitialized<T>(T, Func<T>)

まだ初期化されていない場合、指定された関数を使用してターゲット参照型を初期化します。

EnsureInitialized<T>(T, Object, Func<T>)

まだ初期化されていない場合、指定された関数を使用してターゲット参照型を初期化します。

適用対象

スレッド セーフ

メソッドはスレッド セーフであり、複数の LazyInitializer スレッドから同時に呼び出される可能性があります。

こちらもご覧ください