Lazy, thread-safe Singleton (using Lazy) C# with Example
.Net 4.0 type Lazy guarantees thread-safe object initialization, so this type could be used to make Singletons. public class LazySingleton { private static readonly Lazy _instance = new Lazy(() => new LazySingleton()); public static LazySingleton Instance { get { return _instance.Value; } } private LazySingleton() { } } Using Lazy will make sure that the object is only instantiated when it is used somewhere in the calling code. A simple usage will be like: using System; public class Program { public static void Main() { var instance = LazySingleton.Instance; } } Live Demo on .NET Fiddle