Static Class VS Private Constructor
<p>Today, I have been reading about static class and private constructor. </p>

<p>Static Class - We cannot create an instance on the static class. we cannot inherit the static class. Only single instance is generated.</p>

<p>Private Constructor - We cannot create an instance. We cannot inherit. (I Don't know about how many instance is generated.)</p>

<p>I created two console application i.e. One for static Class, One for Private constructor.</p>

<p><strong>Static Class Code</strong> </p>

<p><a href="https://i.stack.imgur.com/H76CG.png" rel="noreferrer"><img src="https://i.stack.imgur.com/H76CG.png" alt="enter image description here"></a></p>

<p>I understood single object in generated as constructor is called once.</p>

<p><strong>Private Constructor Code</strong></p>

<p><a href="https://i.stack.imgur.com/kMLpF.png" rel="noreferrer"><img src="https://i.stack.imgur.com/kMLpF.png" alt="enter image description here"></a></p>

<p>Now, I didn't understand that whether any object is generated or not.</p>

<p>I have two question.</p>

<p>Question 1. I didn't find any particular difference between Private constructor and Static class. Can you please suggest me that in which scenario where I should use Private Constructor and where should I use Static class as I can use both of them.</p>

<p>Question 2. If I use private constructor, how many objects is generated? </p>

<p>Thanks.  </p>

<p><strong>EDIT :</strong></p>

<p>I think that people didn't understand my question. 
I know that static constructor always call once on the first reference. Static constructor is used to initialize static members of the class.</p>

<p>Question 1. I have a situation : I need to create a class which cannot be instantiated.I can do this by either static class or private constructor. So my question is that "Is there any difference between both of them? which one I should use??"</p>

<p>Question 2. If I use private constructor, how many object is created? If answer is 0 then how private constructor's memory allocation works in the CLR. There is no memory allocation if I use private constructor. </p>