Sdílet prostřednictvím


CA1309: Použijte řadový StringComparison

TypeName

UseOrdinalStringComparison

CheckId

CA1309

Kategorie

Microsoft.Globalization

Narušující změna

Nenarušující

Příčina

Nelingvistická operace porovnání řetězců nemá nastaven parametr StringComparison na hodnotu Ordinal ani na hodnotu OrdinalIgnoreCase.

Popis pravidla

Mnoho řetězcových operací, především metody String.Compare a String.Equals nyní poskytují přetížení, které jako parametr přijímá hodnotu výčtu StringComparision.

Jestliže bude nastaven na hodnotu StringComparison.Ordinal nebo StringComparison.OrdinalIgnoreCase, nebudou řetězce porovnány lingvisticky.To znamená, že vlastnosti přirozeného jazyka jsou při porovnávání ignorovány.To znamená, že rozhodnutí jsou založena na jednoduchém bajtovém porovnání a je ignorována velikost písmen a tabulky shody, které jsou parametrizovány podle kultury.V důsledku vede explicitní nastavení parametru hodnotou StringComparison.Ordinal nebo StringComparison.OrdinalIgnoreCase ke zrychlení kódu, zvýšení přesnosti a spolehlivosti.

Jak vyřešit porušení

Pro vyřešení porušení tohoto pravidla je třeba zaměnit metodu porovnávání řetězců za přetíženou verzi, která jako parametr přijímá výčet StringComparison. Tento parametr musí být nastaven na hodnotu Ordinal nebo OrdinalIgnoreCase.Například změna metody String.Compare(str1, str2) na metodu String.Compare(str1, str2, StringComparison.Ordinal).

Kdy potlačit upozornění

Toto upozornění lze bezpečně potlačit, jestliže má být knihovna či aplikace určena pouze pro omezené místní použití, nebo když má být použitá sémantika aktuální kultury.

Viz také

Referenční dokumentace

CA1307: Zadejte možnosti StringComparison

Další zdroje

Upozornění globalizace