構造体のフィールドを書き込み可能にする (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

詳細については、「コード分析の警告を抑制する方法」を参照してください。

関連項目