CA1830: предпочитайте строго типизированные перегрузки методов Добавления и вставки в StringBuilder

Свойство Значение
Идентификатор правила CA1830
Заголовок предпочитать строго типизированные перегрузки методов Append и Insert в StringBuilder
Категория Производительность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 Как предложение

Причина

Вызывается StringBuilderAppend метод Insert с аргументом, который был результатом вызова ToString типа, для которого InsertAppend у метода есть выделенная перегрузка.

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

Методы Append и Insert предоставляют перегрузки для нескольких типов, помимо String. По возможности рекомендуется использовать строго типизированные перегрузки вместо использования ToString() и перегрузки на основе строк.

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

Удалите ненужный объект ToString() из вызова.

using System.Text;

class C
{
    int _value;

    // Violation
    public void Log(StringBuilder destination)
    {
        destination.Append("Value: ").Append(_value.ToString()).AppendLine();
    }

    // Fixed
    public void Log(StringBuilder destination)
    {
        destination.Append("Value: ").Append(_value).AppendLine();
    }
}

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

Можно отключить вывод предупреждений для этого правила, если вас не беспокоит влияние ненужных выделений строк на производительность.

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

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

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

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

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

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

См. также