Как C # узнает, когда запускать статический конструктор?

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

. Выполнение статического конструктора запускается первым из в домене приложения должны произойти следующие события:

  • Создается экземпляр класса.
  • Ссылка на любой из статических членов класса.

Похоже, что не определено, как определить, когда происходит «первое». Я не могу придумать, как это сделать, кроме как проверять каждый раз. Как это можно сделать?

12
задан 17 February 2012 в 21:25
поделиться