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