That's not a constructor, it's just a member variable. The fact that it's private means only code inside the DBCache can access it, so code outside the calss can't access it like this;
DBCache.objDBCache
What the line is doing is ensuring that the first time the DBCache type is used the objDBCache variable is set to have a new DBCache object, which means that any time DBCache is used it is guaranteed that objDBCache references an object. The fact that this variable is static also means that there will only ever be one of them so it's like a singleton.
Consider the code below
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();
tc.DoSomething();
TestClass.DoSomethingElse();
TestClass tc2 = new TestClass();
tc2.DoSomething();
}
So as you can see the use of the private static ensures that variable is assigned once and once only.