Я читал учебник для реализации Singleton и кодкоторый называется первый статический конструктор или частный конструктор
public class Singleton
{
private static readonly Singleton instance = new Singleton();
static Singleton()
{
Console.WriteLine("Static");
}
private Singleton()
{
Console.WriteLine("Private");
}
public static Singleton Instance { get { return instance; } }
public void DoSomething() {
//this must be thread safe
}
}
Когда я пишу Singleton.Instance, выход
Private
Статический
Я ожидал, что это будет
Статический
Частный
Причина в том, что, когда я прочитал MSDN учебник «https://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx»
я увидел, что открытый конструктор был вызван после статического конструктора.
Почему существует разница?
Для одноточечного, вам не нужен статический конструктор. Создайте объект и используйте простую резьбу с помощью 'lock (object)', чтобы только один поток мог получить доступ к вашему методу. – ViVi
Я начал с Locks и прочитал достаточно документации, заявляя, насколько они дороги. Следовательно, я выбрал этот код. – Rajat
@ViVi этот вопрос не о том, что является лучшим способом, а просто потому, что выход «Private Static». Хороший вопрос – CodingYoshi