Sdílet prostřednictvím


CA1865-CA1867: Použijte řetězec. Method(char) místo řetězce. Method(string) pro řetězec s jedním znakem

Vlastnost Hodnota
ID pravidla CA1865-CA1867
Název Použijte řetězec. Method(char) místo řetězce. Method(string) pro řetězec s jedním znakem
Kategorie Výkon
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 9 CA1865 – Jako návrh
CA1866 – Jako návrh
CA1867 – Ne

Příčina

string.Method(string) se používá, pokud string.Method(char) byl k dispozici.

Cílové metody string pro tato pravidla:

  • StartsWith
  • EndsWith
  • IndexOf
  • LastIndexOf

Následující tabulka shrnuje podmínky pro každou z ID souvisejících pravidel.

ID diagnostiky Popis Je k dispozici oprava kódu?
CA1865 Platí, když se dá bezpečná transformace provést automaticky pomocí opravy kódu. Ano
CA1866 Platí, když není zadané porovnání. No
CA1867 Platí pro jakékoli jiné porovnání řetězců, které ostatní dvě pravidla nepokrývá. No

CA1867 je ve výchozím nastavení zakázaná.

Popis pravidla

Přetížení, které přebírá parametr char, funguje lépe než přetížení, které přebírá parametr řetězce.

Jak opravit porušení

Chcete-li opravit porušení, použijte místo přetížení řetězcového parametru přetížení parametru char.

Představte si následující příklad:

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I")
End Function

Tento kód lze změnit tak, aby předával 'I'StartsWith místo řetězce "I".

public bool StartsWithLetterI()
{
    var testString = "I am a test string.";
    return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
    Dim testString As String = "I am a test string."
    Return testString.StartsWith("I"c)
End Function

Kdy potlačit upozornění

Potlačte porušení tohoto pravidla, pokud vás nezajímá dopad volání metody s řetězcem na výkon.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

#pragma warning disable CA1865 // or CA1866 or CA1867
// The code that's violating the rule is on this line.
#pragma warning restore CA1865 // or CA1866 or CA1867

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

[*.{cs,vb}]
dotnet_diagnostic.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také