CA1847: использование string.Contains(char) вместо string.Contains(string) с одиночными символами

Свойство Значение
Идентификатор правила CA1847
Заголовок Используйте строку. Содержит(char) вместо строки. 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

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

См. также