LazyInitializer Klasse

Definition

Stellt faule 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, das 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, faule Initialisierungsinstanz zuzuweisen, anstatt Verweise zu verwenden, um sicherzustellen, dass Ziele initialisiert wurden, während sie darauf zugreifen.

Methoden

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

Initialisiert einen Zielverweis oder Werttyp mithilfe einer angegebenen Funktion, 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, Func<T>)

Initialisiert einen Zielverweistyp mithilfe 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.

EnsureInitialized<T>(T)

Initialisiert einen Zielverweistyp mit dem parameterlosen Konstruktor des Typs, wenn er noch nicht initialisiert wurde.

Gilt für:

Threadsicherheit

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

Weitere Informationen