Friday, April 26, 2013

Implementing Singleton using Static Constructor

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.

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

3 comments:

  1. My Nes Roms Download has been really successful in the development and peacefully passing all the tests and in the development time of the latest version been put up to testing.

    ReplyDelete
  2. i was looking for a list of blogs for commenting thanksAndrodumpper Whatsdog Testdpc

    ReplyDelete
  3. Do you have a spam issue on this blog; I also am a blogger, and I was curious about your situation; many of us have developed some nice practices and we are looking to trade strategies with other folks, please shoot me an email if interested. picbear

    ReplyDelete