title: Why the default constructor executed before the static constructor?
body: <p>I am wondering why my static constructor is outputting <code>default constructor Static Constructor</code>, and not the other way around <code>Static Constructor and Default constructor</code> or just <code>Default constructor</code>. When I use a static constructor, it should execute the static constructor first. However, from the code below,</p>
  
  <p><strong>The First question:</strong> why is the default constructor is called before the static constructor?</p>
  
  <pre><code>class Program
  {
      static void Main(string[] args)
      {
          var test = Single.S;
      }
      class Single{
          static readonly Single s = new Single();
  
          public static Single S{
              get { return s; }
          }
          private Single(){
              Console.WriteLine("Default");
  
          }
          static Single(){
              Console.WriteLine("staic");
          }
      }
  }
  </code></pre>
  
  <p><strong>The Second question:</strong> How come the Static Single constructor is being called as well?</p>