Ronald responded to my post regarding when static constructors run as follows,
"No, that is simply not the guarantee the CLR makes. The guarantee is exactly
as I stated."

Sorry Ronald,
Static constructors run when the class is loaded. This occurs BEFORE a new
instance of a class is created, or BEFORE a static member is referenced.

Run the following and you will get the same output that I did. If it words
differently in VB.NET then in C#, then we have a big problem:

using System;

namespace Constructors
class A
static int x = 5;
static A()
Console.WriteLine("static constructor ran");
public static int X
get{return x;}
class ClientMain
static void Main(string[] args)
Console.WriteLine("About to create a new A");
A a = new A();
Console.WriteLine("Created a new A");
Console.WriteLine("About to reference a static member");
Console.WriteLine("A.a:= " + A.X);
Console.WriteLine("Referenced a static member");


Outputs the following:

About to create a new A
static constructor ran
Created a new A
About to reference a static member
A.a:= 10
Referenced a static member
Press any key to continue