Possible Duplicate:
Singleton: How should it be used
why we should use singleton class
Possible Duplicate:
Singleton: How should it be used
why we should use singleton class
Well, I would try to avoid using them since effectively you are introducing global elements into your project. However you may decide to use them if you have a resource in your project that you only want to ever have one of. For instance a link to a single database source, a cache or a Factory.
You are building an application in C#. You need a class that has only one instance, and you need to provide a global point of access to the instance. You want to be sure that your solution is efficient and that it takes advantage of the Microsoft .NET common language runtime features. You may also want to make sure that your solution is thread safe.
Benefits
#
The static initialization approach is possible because the .NET Framework explicitly defines how and when static variable initialization occurs. #
The Double-Check Locking idiom described earlier in "Multithreaded Singleton" is implemented correctly in the common language runtime.
Liabilities
If your multithreaded application requires explicit initialization, you have to take precautions to avoid threading issues.