次の方法で共有


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

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

関連項目