If a class has a private constructor then it can’t be instantiated.
So, if I don’t want my class to be instantiated and still use it, then I can make it static.
What is the use of a private constructor?
Also, it’s used in the singleton class, but except for that, is there any other use?
(Note: The reason I am excluding the singleton case above is that I don’t understand why we need a singleton at all when there is a static class available. You may not answer this for my confusion in the question. )
Factory
Private constructors can be useful when using a factory pattern (in other words, a static function that’s used to obtain an instance of the class rather than explicit instantiation).
Pseudo-Sealed with Nested Children
Any nested classes that inherit from the outer class can access the private constructor.
For instance, you can use this to create an abstract class that you can inherit from, but no one else (an
internalconstructor would also work here to restrict inheritance to a single assembly, but theprivateconstructor forces all implementations to be nested classes.)Base Constructor
They can also be used to create “base” constructors that are called from different, more accessible constructors.