C# Language Patrón de constructor Singleton


Ejemplo

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

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

Debido a que el constructor es privado, no se pueden crear nuevas instancias de SingletonClass consumiendo código. La única forma de acceder a la instancia única de SingletonClass es mediante el uso de la propiedad estática SingletonClass.Instance .

La propiedad de Instance es asignada por un constructor estático que genera el compilador de C #. El tiempo de ejecución de .NET garantiza que el constructor estático se ejecute como máximo una vez y se ejecute antes de que se lea la Instance primera vez. Por lo tanto, todas las preocupaciones de sincronización e inicialización se llevan a cabo por el tiempo de ejecución.

Tenga en cuenta que si el constructor estático falla, la clase Singleton quedará permanentemente inutilizable durante la vida útil del dominio de aplicación.

Además, no se garantiza que el constructor estático se ejecute en el momento del primer acceso de la Instance . Más bien, se ejecutará en algún momento antes de eso . Esto hace que el momento en el que se produce la inicialización no sea determinista. En casos prácticos, el JIT a menudo llama al constructor estático durante la compilación (no la ejecución) de un método que hace referencia a la Instance . Esta es una optimización de rendimiento.

Vea la página de Implementaciones de Singleton para otras formas de implementar el patrón de singleton.