title: Why is 'readonly' essential in the following implementation of Singleton?
body: <pre><code>public sealed class Singleton
  {
      static readonly Singleton instance=new Singleton();
  
      // Explicit static constructor to tell C# compiler
      // not to mark type as beforefieldinit
      static Singleton()
      {
      }
  
      Singleton()
      {
      }
  
      public static Singleton Instance
      {
          get
          {
              return instance;
          }
      }
  }
  </code></pre>
  
  <p>I think even on removing <code>readonly</code> keyword from the <code>instance</code> member instantiation, the singleton would still work equally well. </p>
  
  <ul>
  <li>Its static, only one instance would exist.</li>
  <li>The value cant change, as it has no setter.</li>
  <li>Its a sealed class, cant be subclassed.</li>
  </ul>
  
  <p>Please help me correct my understanding of the concepts here.</p>