Share via


Gör structfält skrivbara (IDE0064)

Egenskap Värde
Regel-ID IDE0064
Rubrik Gör structfält skrivbara
Kategori CodeQuality
Underkategori Språkregler (modifierarinställningar)
Tillämpliga språk C#

Översikt

Den här regeln identifierar strukturer som innehåller ett eller readonly flera fält och som även innehåller en tilldelning till this utanför konstruktorn. Regeln rekommenderar att du konverterar readonly fält till icke-skrivskyddade, dvs skrivbara. Att markera sådana structfält som readonly kan leda till oväntat beteende, eftersom värdet som tilldelas till fältet kan ändras när this tilldelas utanför konstruktorn.

Alternativ

Den här regeln har inga associerade alternativ för kodstil.

Exempel

// 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);
    }
}

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till preprocessor-direktiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.IDE0064.severity = none

Om du vill inaktivera hela den här regelkategorin anger du allvarlighetsgraden för kategorin till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även