F-ES Sitecore
Это не конструктор, это просто переменная-член. Тот факт, что он является частным, означает, что только код внутри DBCache может получить к нему доступ, поэтому код вне calss не может получить к нему доступ таким образом;
DBCache.objDBCache
Эта строка гарантирует, что при первом использовании типа DBCache переменная objDBCache будет иметь новый объект DBCache, а это означает, что каждый раз, когда используется DBCache, гарантируется, что objDBCache ссылается на объект. Тот факт, что эта переменная статична, также означает, что когда-либо будет только один из них, так что это похоже на синглтон.
Рассмотрим код ниже
public class TestClass
{
private static DateTime dt = DateTime.Now;
public void DoSomething()
{
Console.WriteLine(dt);
}
public static void DoSomethingElse()
{
Console.WriteLine(dt);
}
}
static void Main(string[] args)
{
TestClass tc = new TestClass(); // this is the first time the TestClass type is loaded into this application domain so dt will
// be given a value
tc.DoSomething(); // this will output dt
TestClass.DoSomethingElse(); // this will output the same value for dt
TestClass tc2 = new TestClass(); // we are creating a new instance of TestClass but TestClass already exists in the domain so
// dt will not be updated as that only happens when TestClass is first used
tc2.DoSomething(); // this will output the same value for dt despite being a different instance
}
Таким образом, как вы можете видеть, использование частной статики гарантирует, что переменная назначается один раз и только один раз.