C# Language Singleton statiquement initialisé


Exemple

public class Singleton
{
    private readonly static Singleton instance = new Singleton();
    private Singleton() { }
    public static Singleton Instance => instance;
}

Cette implémentation est thread-safe car dans ce cas instance objet instance est initialisé dans le constructeur statique. Le CLR garantit déjà que tous les constructeurs statiques sont exécutés en mode thread-safe.

L' instance mutation n'est pas une opération thread-safe, par conséquent l'attribut readonly garantit l'immuabilité après l'initialisation.