There is another way to implement Singleton design pattern by using static constructor. Static constructors in C# are specified to execute only when an instance of the class is created or a static member is referenced, and to execute only once per AppDomain.
This is a thread-safe implementation and there are other ways to implement Singleton but this for seems to crater most of my requirement. It is highly unlikely that I needed a static variable in the singleton.
Output
Main First Call
static constructor called
test test
Reference:
http://csharpindepth.com/Articles/General/Singleton.aspx
This is a thread-safe implementation and there are other ways to implement Singleton but this for seems to crater most of my requirement. It is highly unlikely that I needed a static variable in the singleton.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StaticConstructorExp { class Program { static void Main(string[] args) { Console.WriteLine("Main First Call"); Console.WriteLine(SingletonTest.Instance.abc); Console.ReadLine(); } } class SingletonTest { public String abc; private static readonly SingletonTest _obj = new SingletonTest(); static SingletonTest() { _obj.abc = "test test"; Console.WriteLine("static constructor called"); } private SingletonTest() { } public static SingletonTest Instance { get { return _obj; } } } }
Output
Main First Call
static constructor called
test test
Reference:
http://csharpindepth.com/Articles/General/Singleton.aspx