LazyInitializer Classe

Definizione

Fornisce routine di inizializzazione differita.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
Ereditarietà
LazyInitializer

Esempio

Nell'esempio seguente viene illustrato come utilizzare EnsureInitialized per inizializzare in modo differito un valore usando un valore booleano per tenere traccia dell'inizializzazione già avvenuta e di un oggetto da utilizzare come blocco di esclusione reciproca.

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

Commenti

Queste routine evitano di dover allocare un'istanza dedicata di inizializzazione differita, usando invece i riferimenti per garantire che le destinazioni siano state inizializzate durante l'accesso.

Metodi

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

Inizializza un riferimento di destinazione o un tipo valore usando una funzione specificata se non è già stata inizializzata.

EnsureInitialized<T>(T, Boolean, Object)

Inizializza un riferimento di destinazione o un tipo valore con il relativo costruttore senza parametri se non è già stato inizializzato.

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

Inizializza un tipo riferimento di destinazione utilizzando una funzione specificata se non è già stata inizializzata.

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

Inizializza un tipo riferimento di destinazione con una funzione specificata se non è già stato inizializzato.

EnsureInitialized<T>(T)

Inizializza un tipo riferimento di destinazione con il costruttore senza parametri del tipo, se non è già stato inizializzato.

Si applica a

Thread safety

I metodi di LazyInitializer sono thread-safe e possono essere chiamati da più thread contemporaneamente.

Vedi anche