CA2207:値型のスタティック フィールドのインラインを初期化します
プロパティ | 値 |
---|---|
ルール ID | CA2207 |
Title | 値型のスタティック フィールドのインラインを初期化します |
[カテゴリ] | 使用方法 |
修正が中断ありか中断なしか | なし |
.NET 8 では既定で有効 | いいえ |
原因
値型で明示的な静的コンストラクターを宣言しています。
規則の説明
値型が宣言されると、既定の初期化が行われ、すべての値型フィールドはゼロに設定され、すべての参照型フィールドは null
(Visual Basic では Nothing
) に設定されます。 明示的な静的コンストラクターは、型のインスタンス コンストラクターまたは静的メンバーが呼び出される前に実行されることのみが保証されます。 したがって、インスタンス コンストラクターを呼び出さずに型が作成された場合、静的コンストラクターの実行は保証されません。
すべての静的データがインラインで初期化され、明示的な静的コンストラクターが宣言されていない場合、C# および Visual Basic コンパイラは CIL クラス定義にフラグを追加 beforefieldinit
します。 コンパイラでは、静的な初期化コードを含むプライベート静的コンストラクターも追加します。 このプライベート静的コンストラクターは、型の静的フィールドへのアクセス前に実行することが保証されます。
違反の修正方法
この規則の違反を修正するには、すべての静的データを宣言時に初期化し、静的コンストラクターを削除します。
どのようなときに警告を抑制するか
この規則による警告は抑制しないでください。
関連規則
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET