Dela 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#

Överblick

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

Alternativ

Den här regeln har inga associerade kodformatalternativ.

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

Undertryck en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan regeln.

#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