Ваш код легален и работает.
Следует помнить, что статические конструкторы и инициализаторы не запускаются при загрузке модуля, а только при необходимости.
MyObject будет создаваться только тогда, когда вы создаете экземпляр MyClass или обращаетесь к его статическому полю.
10.5.5.1 Инициализация статического поля
Инициализаторы переменных статического поля класса соответствуют последовательности назначений, которые выполняются в текстовом порядке, в котором они появляются в объявлении класса. Если в классе существует статический конструктор (§10.12), выполнение инициализаторов статического поля происходит непосредственно перед выполнением этого статического конструктора. В противном случае инициализаторы статического поля выполняются во время, зависящее от реализации, до первого использования статического поля этого класса.
Статический конструктор для закрытого типа класса выполняется не более одного раза в данной области приложения. Выполнение статического конструктора инициируется первым из следующих событий, происходящих в домене приложения:
· Создан экземпляр типа класса.
· Ссылка на любой статический член типа класса.
Итак, насколько я понимаю:
- Если статический конструктор отсутствует, вызов статического метода может вызвать инициализаторы, но это не требуется, если статический метод не использует статическое поле.
- Если есть статический конструктор, он должен запускаться при обращении к статическому члену, поэтому вызов статического метода запускает сначала инициализаторы статического поля, а затем статический конструктор.