Click here to Skip to main content
Click here to Skip to main content

Tagged as

Simple Singleton Pattern in C#

, 9 Jul 2011
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...

Alternatives

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

8 Jul 2011
schamese
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",...
7 Nov 2011
Henry.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 {...
6 Nov 2011
Eddy 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...
6 Jul 2011
Shashank Bisen
9 alternatives  
A brief explaination of how to implement the Singleton pattern class in multithreading environment.
31 Oct 2011
RaisKazi
Here is an alternate sample of "Singleton" Pattern. And I hope it is easier to understand.public class MySigleton{ private static MySigleton instance; private MySigleton() { } public static MySigleton InstanceMySigleton { get { if...
27 Oct 2011
ForgaSw
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()); } ...
30 Oct 2011
Paulo 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...
6 Nov 2011
Kabwla.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...
8 Nov 2011
jamesklett
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)

Share

About the Author

Paulo Zemek
Architect
Canada Canada
I started to program computers when I was 11 years old, as a hobbist, programming in AMOS Basic and Blitz Basic for Amiga.
At 12 I had my first try with assembler, but it was too difficult at the time. Then, in the same year, I learned C and, after learning C, I was finally able to learn assembler (for Motorola 680x0).
Not sure, but probably between 12 and 13, I started to learn C++. I always programmed "in an object oriented way", but using function pointers instead of virtual methods.
 
At 15 I started to learn Pascal at school and to use Delphi. At 16 I started my first internship (using Delphi). At 18 I started to work professionally using C++ and since then I've developed my programming skills as a professional developer in C++ and C#, generally creating libraries that help other developers do they work easier, faster and with less errors.
 
Want more info or simply want to contact me?
Take a look at: http://paulozemek.azurewebsites.net/
Or e-mail me at: paulozemek@outlook.com
 
Codeproject MVP 2012
Microsoft MVP 2013

| | Privacy | Mobile
Web01 | 2.8.140827.1 | Last Updated 9 Jul 2011
Article Copyright 2011 by Paulo Zemek
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid