Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA1847 |
| Tytuł | Użyj String.Contains(char) zamiast String.Contains(string) z pojedynczymi znakami |
| Kategoria | Wydajność |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Jako sugestia |
| Zastosowane języki | C# i Visual Basic |
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 znaku.
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
Zignoruj naruszenie tej reguły, jeśli wpływ na wydajność wywołania wyszukiwania nie jest dla Ciebie istotny.
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.