生成されたコードが、静的メンバー (関数を含む) にアクセスするたびにクラスが初期化されているかどうかをチェックするとは思わない。すべてのアクセスをチェックするのは非効率的だと思います。ECMA 334 の §17.11 を見たところ、
静的コンストラクターの実行は、アプリケーション ドメイン内で次のイベントの最初の発生によってトリガーされます。
- クラスのインスタンスが作成されます。
- クラスの静的メンバーのいずれかが参照されています。
「最初」がいつ発生するかを把握する方法が定義されていないようです。毎回チェックする以外に方法が思いつきません。どのようにすればよいでしょうか?