Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
CA1850: Prefer static
| Property | Value |
|---|---|
| Rule ID | CA1850 |
| Title | Prefer static HashData method over ComputeHash |
| Category | Performance |
| Fix is breaking or non-breaking | Non-breaking |
| Enabled by default in .NET 9 | As suggestion |
Cause
An instance of a type that derives from HashAlgorithm is created to call its ComputeHash method, and that type has a static HashData method.
Rule description
Static HashData methods were introduced in .NET 5 on the following types:
These methods help simplify code in cases where you just want to hash some data.
It's more efficient to use these static HashData methods than to create and manage a HashAlgorithm instance to call ComputeHash.
How to fix violations
In general, you can fix the rule by changing your code to call HashData and remove use of the HashAlgorithm instance.
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
The previous code can be changed to call the static HashData(Byte[]) method directly.
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
When to suppress warnings
It is safe to suppress a warning from this rule.
Suppress a warning
If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.
#pragma warning disable CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850
To disable the rule for a file, folder, or project, set its severity to none in the configuration file.
[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none
For more information, see How to suppress code analysis warnings.