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

.NET Fiddle 에서 라이브 데모 확인하기

본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts