Я не верю, что сгенерированный код будет проверять, был ли класс инициализирован каждый раз, когда он обращается к статическому члену (который включает в себя функции). Я считаю, что проверка каждого доступа была бы неэффективной. Я рассмотрел §17.11 в ECMA 334, и он говорит
Выполнение статического конструктора запускается первым из в домене приложения следующие события:
- Создается экземпляр класса.
- Ссылка на любой из статических членов класса.
Похоже, как определить, когда происходит "первое", не определено. Я не могу придумать, как это сделать, но проверять каждый раз. Как это можно сделать?