Wzorzec bardzo prosty w kontrukcji i często stosowany. Gwarantuje korzystanie z jednej instancji globalnego obiektu w całej aplikacji. Dostęp do instancji klasy Singleton uzyskujemy za pomocą statycznej publicznej właściwości Instance. Dodany prywatny konstruktor uniemożliwia stworzenie obiektu. Słowo kluczowe sealed uniemożliwia dziedziczenie po klasie naszego singletona.

public sealed class Singleton
{
  private static Singleton theInstance = null;
  private static readonly object padlock = new object();
  private Singleton() {}

  public static Singleton Instance
  {
    get
    {
      if (theInstance == null) {
        lock (padlock)
        {
          if (theInstance == null)
            theInstance = new Singleton();
        }
      }
      return theInstance;
    }
  }
}