CA1847: Użyj ciągu.Contains(char) zamiast String.Contains(string) z pojedynczymi znakami
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1847 |
Tytuł | Użyj ciągu.Contains(char) zamiast String.Contains(ciąg) z pojedynczymi znakami |
Kategoria | Wydajność |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Jako sugestia |
Przyczyna
String.Contains(string)
jest używany, gdy String.Contains(char)
jest dostępny.
Opis reguły
Podczas wyszukiwania pojedynczego znaku String.Contains(char)
zapewnia lepszą wydajność niż String.Contains(string)
.
Jak naprawić naruszenia
Ogólnie rzecz biorąc, reguła jest stała po prostu przy użyciu literału znaków zamiast literału ciągu.
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
Ten kod można zmienić, aby zamiast tego użyć literału znaków.
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
Kiedy pomijać ostrzeżenia
Pomiń naruszenie tej reguły, jeśli nie interesuje Cię wpływ na wydajność wywołania wyszukiwania.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA1847
// The code that's violating the rule is on this line.
#pragma warning restore CA1847
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1847.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.