構造体フィールドを書き込み可能にする (IDE0064)
財産 | 価値 |
---|---|
ルール ID | IDE0064 |
タイトル | 構造体フィールドを書き込み可能にする |
カテゴリ | CodeQuality |
サブカテゴリ | 言語規則 (修飾子の優先設定) |
該当する言語 | 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);
}
}
警告を抑制する
1 つの違反のみを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、ルールを再度有効にします。
#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