Перефразировано с C # в глубину :
Существуют различные способы реализации шаблона синглтона в C #, от
Не ориентирован на многопотоковое исполнение до полностью загруженной, поточно-ориентированной, простой и высокопроизводительной версии.
Лучшая версия - использование Ленивого типа .NET 4:
public sealed class Singleton
{
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance { get { return lazy.Value; } }
private Singleton()
{
}
}
Это просто и хорошо работает. Это также позволяет вам проверить, был ли создан экземпляр со свойством IsValueCreated , если вам это нужно.