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 8 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.CompareSystem.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.

Viz také