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.