C# Language Modello di costruttore Singleton


Esempio

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

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

Poiché il costruttore è privato, non è possibile creare nuove istanze di SingletonClass mediante il consumo di codice. L'unico modo per accedere alla singola istanza di SingletonClass consiste nell'utilizzare la proprietà statica SingletonClass.Instance .

La proprietà Instance è assegnata da un costruttore statico generato dal compilatore C #. Il runtime .NET garantisce che il costruttore statico venga eseguito al massimo una volta e venga eseguito prima della prima lettura Instance . Pertanto, tutti i problemi di sincronizzazione e di inizializzazione vengono eseguiti dal runtime.

Nota che se il costruttore statico fallisce, la classe Singleton diventa definitivamente inutilizzabile per la vita di AppDomain.

Inoltre, non è garantito il funzionamento del costruttore statico al momento del primo accesso di Instance . Piuttosto, funzionerà prima o poi . Questo rende il momento in cui l'inizializzazione avviene non deterministica. Nei casi pratici, il JIT chiama spesso il costruttore statico durante la compilazione (non l'esecuzione) di un metodo che fa riferimento Instance . Questa è un'ottimizzazione delle prestazioni.

Vedere la pagina Implementazioni Singleton per altri modi per implementare il modello singleton.