2017-02-15 14 views
-2

Я читал о Singleton шаблон проектирования, когда я наткнулся на эту реализацию:Singleton: создать экземпляр внутри статического конструктора

public class Singleton 
{ 
    private static Singleton Instance { get; private set; } 

    private Singleton() 
    { 
    } 

    static Singleton() 
    { 
     Instance = new Singleton(); 
    } 
} 

Является ли это синглтон поточно? Каковы плюсы и минусы такой реализации?

+0

Для обсуждения плюсы/минусы (которые в основном не по теме на переполнение стека), смотри, например, http://csharpindepth.com/Articles/General/Singleton.aspx –

+0

Я видел эту статью, но приведенный выше пример не упоминался. – Mhd

+0

Ваш пример функционально идентичен просто инициализации поля поддержки непосредственно, например. 'static Singleton Instance {get; } = new Singleton(); ', вариант, обсуждаемый в статье. Конечно, код, который вы опубликовали, бесполезен, поскольку свойство 'Instance' является' private' и поэтому может быть вызвано только самим классом 'Singleton' (который не имеет ограничений на количество экземпляров' Singleton', которые он может создать ... синглтоны - действительно только полезные конструкции для внешнего кода). –

ответ

0

Нет одиночек не не поточно, я рекомендую прочитать https://msdn.microsoft.com/en-us/library/ff650316.aspx

+0

Singleton _initialization_ ОП задает вопрос о _is_ потокобезопасности. Конечно, независимо от того, является ли singleton _object_ потокобезопасным, это совершенно отдельный вопрос. Хотя было бы очень плохой способ написать одноэлементный объект, который не является потокобезопасным в контексте, где безопасность потоков в какой-то мере является проблемой, поскольку по своей сути одноэлемент используется неоднократно и потенциально одновременно. –

 Смежные вопросы

  • Нет связанных вопросов^_^