영어로 읽기

다음을 통해 공유


LazyInitializer 클래스

정의

초기화 지연 루틴을 제공합니다.

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

설명

이러한 루틴은 전용 지연 초기화 인스턴스를 할당할 필요가 없으므로 대신 참조를 사용하여 대상에 액세스할 때 초기화되었는지 확인합니다.

메서드

EnsureInitialized<T>(T)

아직 초기화되지 않은 경우 형식의 매개 변수가 없는 생성자를 사용하여 대상 참조 형식을 초기화합니다.

EnsureInitialized<T>(T, Boolean, Object)

아직 초기화되지 않은 경우 해당 매개 변수가 없는 생성자를 사용하여 대상 참조 또는 값 형식을 초기화합니다.

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

아직 초기화되지 않은 경우 지정된 함수를 사용하여 대상 참조 또는 값 형식을 초기화합니다.

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

아직 초기화되지 않은 경우 지정된 함수를 사용하여 대상 참조 형식을 초기화합니다.

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

아직 초기화되지 않은 경우 지정된 함수로 대상 참조 형식을 초기화합니다.

적용 대상

스레드 보안

LazyInitializer 메서드는 스레드로부터 안전하며 여러 스레드에서 동시에 호출될 수 있습니다.

추가 정보