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