Condividi tramite


Rendere scrivibili i campi struct (IDE0064)

Proprietà Valore
ID regola IDE0064
Titolo Rendere scrivibili i campi struct
Categoria CodeQuality
Subcategory Regole della lingua (preferenze del modificatore)
Lingue applicabili C#

Panoramica

Questa regola rileva gli struct che contengono uno o più readonly campi e contengono anche un'assegnazione all'esterno this del costruttore. La regola consiglia di convertire readonly i campi in sola lettura, ovvero scrivibili. Contrassegnare tali campi struct come readonly può causare un comportamento imprevisto, perché il valore assegnato al campo può cambiare quando this viene assegnato all'esterno del costruttore.

Opzioni

Questa regola non include opzioni di tipo codice associate.

Esempio

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

Eliminare un avviso

Se si vuole eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per disabilitare questa intera categoria di regole, impostare la gravità per la categoria none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche