Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA1858 |
| Заголовок | Использование StartsWith вместо IndexOf |
| Категория | Производительность |
| Исправление является критическим или не критическим | неразрывный |
| Включен по умолчанию в .NET 10 | Как предложение |
| Применимые языки | C# и Visual Basic |
Причина
String.IndexOf вызывается и его результат сравнивается с нулем.
Описание правила
Более эффективно и понятно вызвать String.StartsWith, чем String.IndexOf и сравнивать результат с нулём, чтобы определить, начинается ли строка с заданного префикса.
IndexOf выполняет поиск по всей строке, а StartsWith сравнивается только в начале строки.
Устранение нарушений
Замените вызов String.IndexOf вызовом String.StartsWith.
Пример
В следующем фрагменте кода показано нарушение CA1858:
bool M(string s)
{
return s.IndexOf("abc") == 0;
}
Function M(s As String) As Boolean
Return s.IndexOf("abc") = 0
End Function
Следующий фрагмент кода исправляет нарушение.
bool M(string s)
{
return s.StartsWith("abc");
}
Function M(s As String) As Boolean
Return s.StartsWith("abc")
End Function
Когда лучше отключить предупреждения
Это предупреждение безопасно подавлять, если производительность не является проблемой.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1858
// The code that's violating the rule is on this line.
#pragma warning restore CA1858
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1858.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.