C# の静的クラスの初期化順序は決定的ですか?
C# の静的クラスの初期化順序は確かに決定的です。 ECMA-334 標準によると:
初期化順序の例
次のコードを考えてみましょう:
static class B { public static int X = 7; static B() { Console.WriteLine("B.X = " + X); X = A.X; Console.WriteLine("B.X = " + X); } } static class A { public static int X = B.X + 1; static A() { Console.WriteLine("A.X = " + X); } } static class Program { static void Main() { Console.WriteLine("A = {0}, B = {1}", A.X, B.X); } }
実行順序
再配置考慮事項
クラス A と B が再配置された場合でも、A.X の最初の使用によって初期化チェーンがトリガーされるため、初期化の順序は変わりません。
結論
静的クラスの初期化の順序は決定的であり、「 ECMA-334規格。静的メンバーの最初の使用またはインスタンスの作成により、初期化プロセスがトリガーされ、フィールド初期化子、静的コンストラクターの順序で進行します。
以上がC# の静的クラスの初期化順序は予測可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。