 <p>It's like "normal" fields. So before the static constructor. You can check with a very simple program.</p> <p>The order is:</p> <ul> <li>static fields</li> <li>static constructor</li> <li>"normal" fields</li> <li>"normal" constructor</li> </ul> <p>A sample program:</p> <pre><code>class Program { static void Main(string[] args) { Console.WriteLine("Start"); int b = A.B; Console.WriteLine("Read A.B"); new A(); Console.WriteLine("Built A"); } } class A { public static int B = mystaticfunc(); static int mystaticfunc() { Console.WriteLine("Static field"); return 1; } static A() { Console.WriteLine("Static constructor"); } int C = myfunc(); static int myfunc() { Console.WriteLine("Field"); return 1; } public A() { Console.WriteLine("Constructor"); } } </code></pre> <p>Output:</p> <pre class="lang-none prettyprint-override"><code>Start Static field Static constructor Read A.B Field Constructor Built A </code></pre>