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.