Struct-velden beschrijfbaar maken (IDE0064)
Eigenschap | Waarde |
---|---|
Regel-id | IDE0064 |
Titel | Struct-velden schrijfbaar maken |
Categorie | CodeQuality |
Subcategorie | Taalregels (wijzigingsvoorkeuren) |
Toepasselijke talen | C# |
Overzicht
Met deze regel worden structs gedetecteerd die een of meer readonly
velden bevatten en ook een toewijzing naar this
buiten de constructor bevatten. De regel raadt aan velden te converteren readonly
naar niet-alleen-lezen, dat wil gezegd, beschrijfbaar. Het markeren van dergelijke struct-velden als readonly
kan leiden tot onverwacht gedrag, omdat de waarde die aan het veld is toegewezen, kan veranderen wanneer this
buiten de constructor wordt toegewezen.
Opties
Deze regel heeft geen gekoppelde opties voor codestijl.
Voorbeeld
// 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);
}
}
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessor-instructies toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst in op none
in het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.IDE0064.severity = none
Als u deze hele categorie regels wilt uitschakelen, stelt u de ernst van de categorie in op none
in het configuratiebestand.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none
Zie Waarschuwingen voor codeanalyse onderdrukken voor meer informatie.