CA1850: Prefer static HashData
method over ComputeHash
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 8 | 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 theses 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.
See also
Phản hồi
https://aka.ms/ContentUserFeedback.
Sắp ra mắt: Trong năm 2024, chúng tôi sẽ dần gỡ bỏ Sự cố với GitHub dưới dạng cơ chế phản hồi cho nội dung và thay thế bằng hệ thống phản hồi mới. Để biết thêm thông tin, hãy xem:Gửi và xem ý kiến phản hồi dành cho