CA2207:値型のスタティック フィールドのインラインを初期化します

プロパティ
ルール ID CA2207
Title 値型のスタティック フィールドのインラインを初期化します
[カテゴリ] 使用方法
修正が中断ありか中断なしか なし
.NET 8 では既定で有効 いいえ

原因

値型で明示的な静的コンストラクターを宣言しています。

規則の説明

値型が宣言されると、既定の初期化が行われ、すべての値型フィールドはゼロに設定され、すべての参照型フィールドは null (Visual Basic では Nothing) に設定されます。 明示的な静的コンストラクターは、型のインスタンス コンストラクターまたは静的メンバーが呼び出される前に実行されることのみが保証されます。 したがって、インスタンス コンストラクターを呼び出さずに型が作成された場合、静的コンストラクターの実行は保証されません。

すべての静的データがインラインで初期化されていて、明示的な静的コンストラクターが宣言されていない場合、C# および Visual Basic コンパイラでは、この beforefieldinit フラグを MSIL クラス定義に追加します。 コンパイラでは、静的な初期化コードを含むプライベート静的コンストラクターも追加します。 このプライベート静的コンストラクターは、型の静的フィールドへのアクセス前に実行することが保証されます。

違反の修正方法

この規則の違反を修正するには、すべての静的データを宣言時に初期化し、静的コンストラクターを削除します。

どのようなときに警告を抑制するか

この規則による警告は抑制しないでください。

CA1810:参照型の静的フィールドをインラインで初期化します