Section 43.2: Lazy<T> 를 이용한 지연된 (lazy) 방식의 스레드-안전한 Singleton
.NET 4.0 의 Lazy
타입은 스레드-안전한 방식의 객체 초기화를 보장하므로, 이를 Singleton 생성에 활용할 수 있다.
public class LazySingleton {
private static readonly Lazy < LazySingleton > _instance =
new Lazy < LazySingleton > (() => new LazySingleton());
public static LazySingleton Instance {
get {
return _instance.Value;
}
}
private LazySingleton() {}
}
Lazy<T>
는 실제 호출이 일어나는 시점에 객체가 생성됨을 보장한다.
실제 사용하는 예제는 다음과 같을 것이다:
using System;
public class Program
{
public static void Main()
{
var instance = LazySingleton.Instance;
}
}
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
'번역 > C# Notes for Professionals' 카테고리의 다른 글
43.4: 지연된, 스레드-안전한 Singleton (.NET 3.5 나 이전 버전들을 위한 대체 구현) (0) | 2022.07.25 |
---|---|
43.3: 스레드-안전한 지연된 Singleton (Double Checked Locking - 이중 검사 잠금 방식) (0) | 2022.07.25 |
43.1: 정적 (static) 초기화 방식의 Singleton (0) | 2022.05.19 |
42.3: Static 키워드 (0) | 2022.05.19 |
42.2: 정적 (Static) 클래스의 수명 (lifetime) (0) | 2022.05.19 |