CA1865-CA1867: используйте строку. Метод(char)" вместо "string". Method(string)' для строки с одним символом
Свойство | Значение |
---|---|
Идентификатор правила | CA1865-CA1867 |
Заголовок | Используйте строку. Метод(char)" вместо "string". Method(string)' для строки с одним символом |
Категория | Производительность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 8 | CA1865 — как предложение CA1866 — как предложение CA1867 — нет |
Причина
string.Method(string)
используется, когда string.Method(char)
был доступен.
Целевые методы string
для следующих правил:
StartsWith
EndsWith
IndexOf
LastIndexOf
В следующей таблице перечислены условия для каждого связанного идентификатора правил.
ИД диагностики | Description | Доступно исправление кода |
---|---|---|
CA1865 | Применяется, когда безопасное преобразование может выполняться автоматически с помощью исправления кода. | Да |
CA1866 | Применяется, если нет указанного сравнения. | No |
CA1867 | Применяется для любого другого сравнения строк, не охватываемых двумя другими правилами. | No |
CA1867 по умолчанию отключен.
Описание правила
Перегрузка, принимаюющая параметр char, выполняется лучше, чем перегрузка, принимающую строковый параметр.
Устранение нарушений
Чтобы устранить нарушение, используйте перегрузку параметра char вместо перегрузки строковых параметров.
Рассмотрим следующий пример:
public bool StartsWithLetterI()
{
var testString = "I am a test string.";
return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
Dim testString As String = "I am a test string."
Return testString.StartsWith("I")
End Function
Этот код можно изменить для передачи 'I'
StartsWith
вместо строки "I"
.
public bool StartsWithLetterI()
{
var testString = "I am a test string.";
return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
Dim testString As String = "I am a test string."
Return testString.StartsWith("I"c)
End Function
Когда лучше отключить предупреждения
Отключите нарушение этого правила, если вы не беспокоитесь о влиянии на производительность вызова метода со строкой.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1865 // or CA1866 or CA1867
// The code that's violating the rule is on this line.
#pragma warning restore CA1865 // or CA1866 or CA1867
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.