CA1309: Použijte ordinal StringComparison

Vlastnost Hodnota
ID pravidla CA1309
Název Použijte Ordinal StringComparison
Kategorie Globalizace
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Ne
Příslušné jazyky C# a Visual Basic

Příčina

Operace porovnání řetězců, která není jazyková, nenastavuje StringComparison parametr na Ordinal nebo OrdinalIgnoreCase.

Popis pravidla

Mnoho řetězcových operací, především metody System.String.Compare a System.String.Equals, nyní poskytují přetížení, které přijímá hodnotu výčtu System.StringComparison 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žena na jednoduchém porovnávání bajtů, nikoli na tabulkách pro velká a malá písmena nebo ekvivalentech, které jsou parametrizovány kulturou. V důsledku toho tím, že explicitně nastavíte parametr na StringComparison.Ordinal nebo StringComparison.OrdinalIgnoreCase, váš kód často získává na rychlosti, zvyšuje správnost a stává se spolehlivějším.

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á jako parametr výčet System.StringComparison, a zadejte buď 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é