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");
x=10;
}
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