CA1850: предпочесть статический HashData
метод ComputeHash
Свойство | Значение |
---|---|
Идентификатор правила | CA1850 |
Заголовок | Предпочесть статический HashData метод ComputeHash |
Категория | Производительность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 8 | Как предложение |
Причина
Экземпляр типа, производного от HashAlgorithm, создается для вызова его метода ComputeHash
, и этот тип имеет статический метод HashData
.
Описание правила
Статические методы HashData
появились в .NET 5 для следующих типов:
Эти методы позволяют упростить код в тех случаях, когда требуется только хэшировать данные.
Использование статических методов HashData
эффективнее создания экземпляра HashAlgorithm
и управления им для вызова ComputeHash
.
Устранение нарушений
Как правило, вы можете исправить правило, изменив код, чтобы вызвать HashData
и удалить использование экземпляра HashAlgorithm
.
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
Предыдущий код можно изменить для вызова статического метода HashData(Byte[]) напрямую.
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
Когда лучше отключить предупреждения
Вы можете безопасно скрыть предупреждения, связанные с этим правилом.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.