LazyInitializer LazyInitializer LazyInitializer LazyInitializer Class

定義

遅延初期化ルーチンを提供します。Provides lazy initialization routines.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
継承
LazyInitializerLazyInitializerLazyInitializerLazyInitializer

次の例は、EnsureInitialized を使用して、初期化が既に行われているかどうか、および相互排他ロックとして使用するオブジェクトを追跡するブール値を使用して値を遅延初期化する方法を示しています。The following example demonstrates how to use EnsureInitialized to lazily initialize a value using a Boolean value to track whether initialization has already happened and an object to use as the mutual exclusion lock.

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

注釈

これらのルーチンは、ターゲットがアクセス時に初期化されていることを確認するために、専用のレイジー初期化インスタンスを割り当てる必要がないようにします。These routines avoid needing to allocate a dedicated, lazy-initialization instance, instead using references to ensure targets have been initialized as they are accessed.

メソッド

EnsureInitialized<T>(T) EnsureInitialized<T>(T) EnsureInitialized<T>(T) EnsureInitialized<T>(T)

まだ初期化されていない場合、型のパラメーターなしのコンストラクターを使用してターゲット参照型を初期化します。Initializes a target reference type with the type's parameterless constructor if it hasn't already been initialized.

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

まだ初期化されていない場合、指定された関数を使用してターゲット参照型を初期化します。Initializes a target reference type by using a specified function if it hasn't already been initialized.

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

まだ初期化されていない場合、そのパラメーターなしのコンストラクターを使用してターゲット参照または値の型を初期化します。Initializes a target reference or value type with its parameterless constructor if it hasn't already been initialized.

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

まだ初期化されていない場合、指定された関数を使用してターゲット参照型を初期化します。Initializes a target reference type with a specified function if it has not already been initialized.

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

まだ初期化されていない場合、指定された関数を使用することでターゲット参照または値の型を初期化します。Initializes a target reference or value type by using a specified function if it hasn't already been initialized.

適用対象

スレッド セーフ

のメソッドはLazyInitializerスレッドセーフであり、複数のスレッドから同時に呼び出すことができます。The methods of LazyInitializer are thread-safe and may be called from multiple threads concurrently.

こちらもご覧ください