Share via


CA1850: Voorkeur voor statische HashData methode ComputeHash

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 HashAlgorithm exemplaar aan te roepen HashData 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.

Zie ook