Today I had a discussion with my colleague and concluded following points. Kindly throw some light if all are correct or some modification is required.
1.-3.You cannot exactly know when it happens and so you cannot depend on it. A static constructor will give you a little control what happens when it get called.
public class UtilityClass
{
//
// Resources
//
// r1 will be initialized by the static constructor
static Resource1 r1 = null;
// r2 will be initialized first, as static constructors are
// invoked after the static variables are initialized
static Resource2 r2 = new Resource2();
static UtilityClass()
{
r1 = new Resource1();
}
static void f1(){}
static void f2(){}
}
4.Static constructors are slow
The exact timing of static constructor execution is implementation-dependent, but is subject to the following rules: