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.