Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| 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.