When we define a class as static, as soon as application is ready, instance of this class gets created by the CLR. Hence
Application will create instance of the class irrespective of consumption of it.
Memory allocation for static object falls under Generation 2. Hence garbage collector does not clean memory even when it’s not used.
Static does not support inheritance.
where as if we go for Singleton design pattern,
Instance gets created in memory when the application requests first time for it’s instance.
As application creates instance on demand, memory performance is better compare to static.
We can inherit singleton class .