LazyInitializer Klasse

Definition

Stellt verzögerte Initialisierungsroutinen bereit.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
Vererbung
LazyInitializer

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Sie "EnsureInitialized" verwenden, um einen Wert mit einem booleschen Wert zu initialisieren, um nachzuverfolgen, ob die Initialisierung bereits erfolgt ist und ein Objekt als gegenseitige Ausschlusssperre verwendet werden soll.

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

Hinweise

Diese Routinen vermeiden es, eine dedizierte, lazy-initialisierungsinstanz zuzuweisen, anstatt Verweise zu verwenden, um sicherzustellen, dass Ziele initialisiert wurden, da sie darauf zugreifen.

Methoden

EnsureInitialized<T>(T)

Initialisiert einen Zielverweistyp mit seinem parameterlosen Konstruktor, wenn er noch nicht initialisiert wurde.

EnsureInitialized<T>(T, Boolean, Object)

Initialisiert einen Zielverweis- oder Werttyp mit seinem parameterlosen Konstruktor, wenn er noch nicht initialisiert wurde.

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

Initialisiert einen Zielverweis- oder Werttyp mit einer angegebenen Funktion, wenn er noch nicht initialisiert wurde.

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

Initialisiert einen Zielverweistyp mit einer angegebenen Funktion, wenn er noch nicht initialisiert wurde.

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

Initialisiert einen Zielverweistyp mit einer angegebenen Funktion, wenn er noch nicht initialisiert wurde.

Gilt für

Threadsicherheit

Die Methoden LazyInitializer sind threadsicher und können gleichzeitig von mehreren Threads aufgerufen werden.

Siehe auch