C# での静的変数の初期化
C# で静的変数を操作する場合、初期化のタイミングを理解することが重要です。
静的変数のタイミング初期化
静的変数は次の場合に初期化されます:
-
静的コンストラクターが存在する: クラスに静的コンストラクター (静的 MyStaticConstructor()) がある場合、静的変数は、静的コンストラクターが最初に呼び出されたときに初期化されます。 time.
-
静的コンストラクターなし: 静的コンストラクターがない場合、型がメモリに読み込まれるときに静的変数が初期化されます。
型Loading Trigger
クラスのロードがトリガーされます作成者:
- クラスのインスタンスの作成
- クラスの静的メンバーへのアクセス
- リフレクションを使用して明示的にロードされるクラス
追加考慮事項
- .NET 4 では、静的変数の初期化がより「遅延」になりました。つまり、最初にアクセスされたときにのみ初期化されます。
- beforefieldinit フラグが設定されている場合、static変数は、インスタンス コンストラクターが呼び出される前に初期化されます。このフラグは、静的コンストラクターの存在によって設定されます。
- 一貫した動作を確保するには、特定の初期化タイミングに依存することを避け、通常のコード アクセスを通じて単純に静的変数を初期化することをお勧めします。
さらなる詳細と包括的な説明については、元の応答にリンクされている Jon Skeet の記事を参照してください。
以上がC# で静的変数はいつ初期化されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。