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.