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: Voorkeur voor statische
| Eigenschappen | Weergegeven als |
|---|---|
| Regel-id | CA1850 |
| Titel | Voorkeur voor statische HashData methode ComputeHash |
| Categorie | Prestaties |
| Oplossing is brekend of niet-brekend | Niet-brekend |
| Standaard ingeschakeld in .NET 9 | Als suggestie |
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 exemplaar te maken en te beheren dat moet worden aangeroepen ComputeHash.
Schendingen oplossen
Over het algemeen kunt u de regel herstellen door de code te wijzigen om het gebruik van het HashData exemplaar aan te roepen HashAlgorithm en 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 Codeanalysewaarschuwingen onderdrukken voor meer informatie.