I always see singletons implemented like this:
public class Singleton
{
    static Singleton instance;
    static object obj = new object();
    public static Singleton Instance
    {
        get
        {
            lock (obj)
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }
    }
    protected Singleton() { }
}
Is there's something wrong with implementing it like this:
public class Singleton
{
    static readonly Singleton instance = new Singleton();
    public static Singleton Instance
    {
        get { return instance; }
    }
    protected Singleton() { }
}
? It gets lazy initialized on the very same moment as in the first implementation so I wonder why this isn't a popular solution? It should be also faster because there's no need for a condition, locking and the field is marked as readonly which will let the compiler to do some optimisations
Let's not talk about the singleton (anti)pattern itself, please
 
     
    