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);
これらのルーチンでは、専用の遅延初期化インスタンスを割り当てる必要がなくなります。代わりに、参照を使用してターゲットがアクセス時に初期化されていることを確認します。
Ensure |
まだ初期化されていない場合、型のパラメーターなしのコンストラクターを使用してターゲット参照型を初期化します。 |
Ensure |
まだ初期化されていない場合、そのパラメーターなしのコンストラクターを使用してターゲット参照または値の型を初期化します。 |
Ensure |
まだ初期化されていない場合、指定された関数を使用することでターゲット参照または値の型を初期化します。 |
Ensure |
まだ初期化されていない場合、指定された関数を使用してターゲット参照型を初期化します。 |
Ensure |
まだ初期化されていない場合、指定された関数を使用してターゲット参照型を初期化します。 |
メソッドはスレッド セーフであり、複数の LazyInitializer スレッドから同時に呼び出される可能性があります。