Schrijfbare structvelden maken (IDE0064)
(Vastgoed or Eigendom, depending on the context) | Waarde |
---|---|
Regel-ID | IDE0064 |
titel | Schrijfbare structvelden maken |
Categorie | CodeQuality |
subcategorie | Taalregels (wijzigingsvoorkeuren) |
Toepasselijke talen | C# |
Overzicht
Met deze regel worden structs gedetecteerd die een of meer readonly
velden bevatten en die ook een toewijzing bevatten aan this
buiten de constructor. De regel raadt aan om readonly
velden om te zetten naar niet-alleen-lezen, dus beschrijfbaar. Het markeren van dergelijke structvelden 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 preprocessorrichtlijnen 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 ervan 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 voor de categorie in op none
in het configuratiebestand.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none
Voor meer informatie, zie Hoe codeanalysewaarschuwingen te onderdrukken.