C# Language 싱글 톤 생성자 패턴


public class SingletonClass
{
    public static SingletonClass Instance { get; } = new SingletonClass();

    private SingletonClass()
    {
        // Put custom constructor code here
    }    
}

생성자가 private이기 때문에 코드를 사용하여 SingletonClass 새 인스턴스를 만들 수 없습니다. SingletonClass 의 단일 인스턴스에 액세스하는 유일한 방법은 static 속성 SingletonClass.Instance 사용하는 것입니다.

Instance 속성은 C # 컴파일러에서 생성하는 정적 생성자에 의해 지정됩니다. .NET 런타임은 정적 생성자가 한 번만 실행되고 Instance 가 처음 읽히기 전에 실행된다는 것을 보장합니다. 따라서 모든 동기화 및 초기화 문제는 런타임에 의해 수행됩니다.

정적 생성자가 실패하면 Singleton 클래스는 AppDomain의 수명 동안 영구적으로 사용할 수 없게됩니다.

또한 정적 생성자는 Instance 의 첫 번째 액세스시 실행되지 않을 수도 있습니다. 오히려, 그것은 어느 시점 이전에 실행될 것 입니다 . 이것은 초기화가 비 결정적이되는 시간을 만듭니다. 실제로 JIT는 Instance 참조하는 메소드의 컴파일 (실행 아님) 중에 정적 생성자를 호출하는 경우가 있습니다. 이것은 성능 최적화입니다.

싱글 톤 패턴을 구현하는 다른 방법은 싱글 톤 구현 페이지를 참조하십시오.