Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
CA1850: предпочесть статический
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA1850 |
| Заголовок | Предпочитайте статический метод HashData перед ComputeHash |
| Категория | Производительность |
| Исправление является критическим или не критическим | неразрывный |
| Включен по умолчанию в .NET 10 | Как предложение |
| Применимые языки | C# и Visual Basic |
Причина
Экземпляр типа, производного от 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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.