Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
CA1850: Geef de voorkeur aan een statische
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA1850 |
| Titel | Geef de voorkeur aan de statische HashData methode boven ComputeHash |
| Categorie | Prestaties |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
Een exemplaar van een type dat is afgeleid van HashAlgorithm , wordt gemaakt om de ComputeHash methode aan te roepen en dat type heeft een statische HashData methode.
Beschrijving van regel
Statische HashData methoden zijn geïntroduceerd in .NET 5 op de volgende typen:
Met deze methoden kunt u code vereenvoudigen in gevallen waarin u alleen bepaalde gegevens wilt hashen.
Het is efficiënter om deze statische HashData methoden te gebruiken dan om een HashAlgorithm instantie te maken en te beheren om ComputeHash aan te roepen.
Hoe schendingen op te lossen
Over het algemeen kunt u de regel herstellen door uw code te wijzigen om HashData aan te roepen en het gebruik van het HashAlgorithm-exemplaar te verwijderen.
public bool CheckHash(byte[] buffer)
{
using (var sha256 = SHA256.Create())
{
byte[] digest = sha256.ComputeHash(buffer);
return DoesHashExist(digest);
}
}
Public Function CheckHash(buffer As Byte()) As Boolean
Using sha256 As SHA256 = SHA256.Create()
Dim digest As Byte() = sha256.ComputeHash(buffer)
Return DoesHashExist(digest)
End Using
End Function
De vorige code kan worden gewijzigd om de statische HashData(Byte[]) methode rechtstreeks aan te roepen.
public bool CheckHash(byte[] buffer)
{
byte[] digest = SHA256.HashData(buffer);
return DoesHashExist(digest);
}
Public Function CheckHash(buffer As Byte()) As Boolean
Dim digest As Byte() = SHA256.HashData(buffer)
Return DoesHashExist(digest)
End Function
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken.
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 CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.