title: Initialization order of static readonly field
body: <p>I'm curious of the C# spec says anything about the order of initializing static field's in C# 5 (.net4).  For instance:</p>
  
  <pre><code>public class Test
  {
     public static readonly string A = "hi";
     public static readonly string B = "bye";
     public static readonly string DEFAULT = A;
  }
  </code></pre>
  
  <p>In testing (Mono 2.x) they seem to be initialized in the order they appear in code.  eg. As is, <code>DEFAULT</code> will have the value "hi", but if I move the definition for <code>DEFAULT</code> above A and B, it will be assigned <code>NULL</code> because A hasn't been assigned yet.</p>
  
  <p>Is there a guarantee that the variables are initialized in order? Or is it up to the compiler?</p>
  
  <p>Thanks.</p>