構造体のフィールドを書き込み可能にする (IDE0064)
プロパティ | 値 |
---|---|
ルール ID | IDE0064 |
Title | 構造体のフィールドを書き込み可能にする |
カテゴリ | CodeQuality |
Subcategory | 言語規則 (修飾子の基本設定) |
該当言語 | C# |
概要
この規則は、1 つ以上の readonly
フィールドを含む構造体や、コンストラクターの外部への this
への割り当てを含む構造体を検出します。 この規則では、readonly
フィールドを読み取り専用以外 (つまり書き込み可能) に変換することをお勧めします。 このような構造体のフィールドを readonly
としてマークすると、this
がコンストラクターの外部に割り当てられたときにフィールドに割り当てられた値が変更される可能性があるため、予期しない動作につながる可能性があります。
オプション
この規則には、関連付けられているコード スタイル オプションはありません。
例
// Code with violations
struct MyStruct
{
public readonly int Value;
public MyStruct(int value)
{
Value = value;
}
public void Test()
{
this = new MyStruct(5);
}
}
// Fixed code
struct MyStruct
{
public int Value;
public MyStruct(int value)
{
Value = value;
}
public void Test()
{
this = new MyStruct(5);
}
}
警告を抑制する
単一の違反だけを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則を再度有効にします。
#pragma warning disable IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064
ファイル、フォルダー、またはプロジェクトのルールを無効にするには、構成ファイルでその重要度を none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.IDE0064.severity = none
規則のこのカテゴリ全体を無効にするには、構成ファイルでカテゴリの重要度を none
に設定します。
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET