here numaralı belirtilen Tekton uygulamasından geçiyordum. Statik kurucuların, ilk durağan yöntem çağrısı öncesinde veya nesnenin başlatılmasından önce gerçekleştirilmesini anlıyorum, ancak burada kullanıldığını anlamamış (yorumlardan bile). Birisi bunu anlamama yardımcı olabilir mi?Boş statik yapıcı ile tekil uygulama
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton()
{
}
private Singleton()
{
}
public static Singleton Instance
{
get
{
return instance;
}
}
}
Aşağıdaki madde altındaki mermi noktalarında açıklanmıştır: 'tür başlatıcıların tembelliği, yalnızca tür tarafından 'beforefieldinit' adı verilen özel bir bayrakla işaretlenmediğinde garanti edilir. Ne yazık ki, C# derleyici (en az .NET 1.1 çalışma zamanında sağlanan), statik yapıcı (örneğin bir kurucu gibi görünüyor ama statik olarak işaretlenmiş bir blok) olmayan tüm türleri işaretler 'beforefieldinit'. “Yeni Singleton()” un mümkün olduğu kadar geç (tembel) yapılmasını istiyor ve bunu yapmak için C# derleyicisini almanın tek yolu boş bir statik kurucu sağlamaktır. – porges
Cehaletimi bağışla. "Tip başlatıcıların tembelliği" nedir. İlk istek üzerine başlatılıyor mu? – Nemo
Tam olarak. Yalnızca bu durumda garanti edilir, aksi takdirde çalışma zamanı, tür yüklenir yüklenmez, tür başlatıcıyı istediği zaman çalıştırabilir. Daha uzun bir açıklama için Jay'in cevabındaki bağlantıya bakın. – porges