CA1309: Použijte řadový StringComparison
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1309 |
Název | Použijte řadový StringComparison |
Kategorie | Globalizace |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Operace porovnání řetězců, která není jazyková, nenastavuje StringComparison parametr na Ordinal nebo OrdinalIgnoreCase.
Popis pravidla
Mnoho řetězcových operací, které jsou nejdůležitější a System.String.Compare System.String.Equals metody, nyní poskytují přetížení, které přijímá System.StringComparison hodnotu výčtu jako parametr.
Pokud zadáte stringComparison.Ordinal nebo StringComparison.OrdinalIgnoreCase, porovnání řetězců není lingvistické. To znamená, že funkce specifické pro přirozený jazyk se při rozhodování o porovnání ignorují. Ignorování funkcí přirozeného jazyka znamená, že rozhodnutí jsou založená na jednoduchých porovnávání bajtů, nikoli na tabulkách s velikostí a ekvivalencemi, které jsou parametrizovány jazykovou verzí. V důsledku toho explicitně nastavíte parametr buď na StringComparison.Ordinal nebo StringComparison.OrdinalIgnoreCase, váš kód často zvyšuje rychlost, zvyšuje správnost a stává se spolehlivější.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, změňte metodu porovnání řetězců na přetížení, který přijímá System.StringComparison výčet jako parametr, a zadejte ordinal nebo OrdinalIgnoreCase. Například změňte String.Compare(str1, str2)
na String.Compare(str1, str2, StringComparison.Ordinal)
.
Kdy potlačit upozornění
Je bezpečné potlačit upozornění z tohoto pravidla, pokud je knihovna nebo aplikace určená pro omezenou místní cílovou skupinu nebo kdy se má použít sémantika aktuální jazykové verze.
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 CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309
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.CA1309.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.