Looking for c# Keywords? Try Ask4Keywords

C# Language Ленивый, потокобезопасный Синглтон (с использованием Lazy )


пример

.Net 4.0 Lazy гарантирует инициализацию объектов с потоком, поэтому этот тип можно использовать для создания 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() { }
}

Использование Lazy<T> гарантирует, что объект создается только тогда, когда он используется где-то в вызывающем коде.

Простое использование будет выглядеть так:

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

Живая демонстрация на .NET скрипке