CA1834: используйте StringBuilder.Append(char) для одно символьных строк
Свойство | Значение |
---|---|
Идентификатор правила | CA1834 |
Заголовок | используйте StringBuilder.Append(char) для строк с одним символом. |
Категория | Производительность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 8 | Как предложение |
Причина
Это правило срабатывает, когда строка длиной в один символ передается в метод Append.
Описание правила
При вызове StringBuilder.Append
со строкой длиной в один символ рекомендуется использовать const char
вместо единичной длины const string
, чтобы повысить производительность.
Устранение нарушений
Нарушение можно устранить вручную. В некоторых случаях для исправления кода в Visual Studio можно использовать быстрые действия. Примеры:
Пример 1
Вызовы StringBuilder.Append
со строковым литералом единичной длины:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append("a");
}
}
}
Совет
Для этого правила в Visual Studio доступно исправление кода. Чтобы использовать его, поместите курсор на нарушение и нажмите клавиши CTRL+ (период). Выберите " StringBuilder.Append(char)" при необходимости. В списке параметров, представленных.
Исправление, примененное в Visual Studio:
using System;
using System.Text;
namespace TestNamespace
{
class TestClass
{
private void TestMethod()
{
StringBuilder sb = new StringBuilder();
sb.Append('a');
}
}
}
В некоторых случаях, например при использовании поля класса единичной длины const string
, Visual Studio не предлагает исправление кода (но анализатор по-прежнему срабатывает). В этих случаях требуется исправление вручную.
Пример 2
Вызовы StringBuilder.Append
с полем класса единичной длины const string
:
using System;
using System.Text;
namespace TestNamespace
{
public class Program
{
public const string unitString = "a";
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
sb.Append(unitString);
}
}
}
После тщательного анализа unitString
можно изменить на char
, не вызывая ошибок сборки.
using System;
using System.Text;
namespace TestNamespace
{
public class Program
{
public const char unitString = 'a';
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
sb.Append(unitString);
}
}
}
Когда лучше отключить предупреждения
Нарушение этого правила можно отключить, если вы не беспокоитесь об улучшении производительности при использовании StringBuilder
.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.