Looking for c# Answers? Try Ask4KnowledgeBase
Looking for c# Keywords? Try Ask4Keywords

C# Language Paresseux, singleton thread-safe (pour .NET 3.5 ou version antérieure, implémentation alternative)


Exemple

Parce que dans .NET 3.5 et versions antérieures, vous n'avez pas la classe Lazy<T> , vous utilisez le modèle suivant:

public class Singleton
{
    private Singleton() // prevents public instantiation
    {
    }

    public static Singleton Instance
    {
        get
        {
            return Nested.instance;
        }
    }
    
    private class Nested
    {
        // Explicit static constructor to tell C# compiler
        // not to mark type as beforefieldinit
        static Nested()
        {
        }

        internal static readonly Singleton instance = new Singleton();
    }
}

Ceci est inspiré du post du blog de Jon Skeet .

Parce que le Nested l'instanciation de l'instance singleton classe est imbriquée privé et ne sera pas déclenchée en accédant à d' autres membres de la Sigleton classe (comme une propriété publique en lecture seule, par exemple).