Click here to Skip to main content
15,885,757 members
Articles / Programming Languages / C#

Simple Singleton Pattern in C#

Rate me:
Please Sign up or sign in to vote.
3.00/5 (2 votes)
27 Oct 2011CPOL 12.5K   1  
Another alternative: class Singleton { public static Singleton m_Instance; //Prevent instance creation from other classes private Singleton() { } public static Singleton Instance { get { return m_Instance ?? (m_Instance = new Singleton()); } ...

Alternatives

Members may post updates or alternatives to this current article in order to show different approaches or add new features.

Please Sign up or sign in to vote.
9 Jul 2011Paulo Zemek
The easiest singleton pattern is the one you used to the lock object itself.Creating any variable as static readonly and initializing it directly (or via a static constructor) will already make it singleton.Also, considering that "lock" clears all the caches, you don't need to declare the...
Please Sign up or sign in to vote.
7 Nov 2011Henry.Ayoola
Jon Skeet has written an article giving six singleton implementations in C#. The simplest only works in .NET 4:public sealed class Singleton{ private static readonly Lazy lazy = new Lazy(() => new Singleton()); public static Singleton Instance {...
Please Sign up or sign in to vote.
6 Nov 2011Eddy Vluggen
I'll be shot for posting this as an alternative, but I'm too curious for the answer.Shashank Bisen wrote: Ensure a class only has one instance.Provide a global point of access to it....As stated above, a singleton is a class that can be instantiated once, and only once.What is the...
Please Sign up or sign in to vote.
6 Jul 2011Shashank Bisen 8 alternatives  
A brief explaination of how to implement the Singleton pattern class in multithreading environment.
Please Sign up or sign in to vote.
30 Oct 2011Paulo Zemek
The problem with alternative 3 and 4 is that it is not multi-threaded.Two threads may check for null, then the two will create the new instance. The race condition only happens at the first accesses. If a single thread accesses the object, then later many threads do the access, there is no...
Please Sign up or sign in to vote.
8 Jul 2011schamese
This should do it as well:class Singleton { public static readonly Singleton m_Instance = new Singleton(); // Prevent instance creation from other classes private Singleton() { } public static Singleton Instance { get { return m_Instance; } }}And it is "Singleton",...
Please Sign up or sign in to vote.
6 Nov 2011Kabwla.Phone
Make it a generic class and fix your problem forever. This works because the compiler turns the generic into a new class (something like SigletonManagerOfTypeParamterTypeName). So the static variables are not shared amongst instances...public static class Singleton where...
Please Sign up or sign in to vote.
8 Nov 2011jamesklett
You should do it like this:public sealed class MySingleton { public static readonly MySingleton SharedInstance = new MySingleton (); private MySingleton () : base() { }}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Peru Peru
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions