C# Language Paresseux, Singleton (utilisant Lazy )


Exemple

Le type .Net 4.0 Lazy garantit l'initialisation d'objet thread-safe, donc ce type pourrait être utilisé pour créer Singletons.

public class LazySingleton
{
    private static readonly Lazy<LazySingleton> _instance =
        new Lazy<LazySingleton>(() => new LazySingleton());
 
    public static LazySingleton Instance
    {
        get { return _instance.Value; }
    }

    private LazySingleton() { }
}

Utiliser Lazy<T> fera en sorte que l'objet ne soit instancié que lorsqu'il est utilisé quelque part dans le code d'appel.

Un usage simple sera comme:

using System;
                    
public class Program
{
    public static void Main()
    {
        var instance = LazySingleton.Instance;
    }
}

Démo en direct sur .NET Fiddle