1.-3. Вы не можете точно знать, когда это произойдет, и поэтому вы не можете зависеть от этого.Статический конструктор даст вам небольшой контроль над тем, что происходит, когда его вызывают.
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.Статические конструкторы работают медленно
Точное время выполнения статического конструктора зависит от реализации, ноподчиняется следующим правилам:
- Статический конструктор для класса выполняется перед созданием любого экземпляра класса.
- Статический конструктор для класса выполняется перед любым из статическихчлены для класса
ссылаются. - Статический конструктор для класса выполняется после инициализаторов статического поля (если есть) для класса.
- Статический конструктор для класса выполняется,не более одного раза при создании одной программы.
- Порядок выполнения между двумя статическими конструкторами двух
различных классов не указан.