О, это сложно.Это зависит от того, установлен ли флаг beforefieldinit
, что, в свою очередь (в C #), зависит от наличия статического конструктора.И хуже;в .NET 4 я считаю, поведение изменилось, чтобы сделать его более "ленивым", чем раньше.
Честно говоря, я бы не стал кодировать какое-либо конкретное поведение здесь;просто: статические поля будут инициализированы до того, как вы попытаетесь их использовать, при условии, что вы используете обычный код для доступа к ним.
У Джона Скита есть хорошая статья об этом здесь и здесь