@IT/Insider.NET「開発環境とEXEとでstatic領域の初期化タイミングがちがう」

ついでなので、さらっと@ITのフォーラムを見ていたら、こんな話題もありました。
beforefieldinit の問題ですが、初期化済みフィールドに値が設定されるタイミングとしては、 native アプリケーションの頃から win32 の開発環境のほとんどが*1 beforefieldinit が設定された状態になっていて、多くの人がそれを期待してその動作を理解していたと思うんだけど、ちょっと native code のつもりで、Singleton クラスじゃなくて int とかに読み替えてみてはどうだろう?
C#でプログラミングはじめましてとかの人は除いて、「ああ,あたりまえのことだったか」と思い直すんじゃないのかな?*2

*1:LSI-C86 とか Visual C++ とか Borland C++ とか Borland Delphi とか Borland C++ Builder などなど

*2:クラスコンストラクタが定義されると挙動が変わるってのは C# の挙動として新しい出来事かもしれないけれども…、Java でも同じ話題あったかなぁ?