Поделиться через


CA1855: используйте диапазон<T>. Clear() вместо Span<T>. Fill()

Свойство Значение
Идентификатор правила CA1855
Заголовок Используйте диапазон<T>. Clear() вместо Span<T>. Fill()
Категория Производительность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 Как предложение

Причина

Span<T>.Fill(T) вызывается для заполнения элементов диапазона значением по умолчанию.

Описание правила

Более эффективно Span<T>.Clear() вызывать, чем вызывать Span<T>.Fill(T) элементы диапазона со значением по умолчанию.

Устранение нарушений

Замените вызов Span<T>.Fill(T) вызовом Span<T>.Clear().

Пример

В следующем фрагменте кода показано нарушение CA1855:

void M(Span<byte> span)
{
    span.Fill(0);
}

Следующий фрагмент кода исправляет нарушение.

void M(Span<byte> span)
{
    span.Clear();
}

Когда лучше отключить предупреждения

Это предупреждение безопасно подавлять, если производительность не является проблемой.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA1855
// The code that's violating the rule is on this line.
#pragma warning restore CA1855

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA1855.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.