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 | CA1310 |
| Název | Zadejte StringComparison pro správnost |
| 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ů používá přetížení metody, aniž by nastavil StringComparison parametr a ve výchozím nastavení používá porovnání řetězců specifických pro jazykovou verzi. Proto se jeho chování bude lišit v závislosti na nastavení národního prostředí aktuálního uživatele.
Popis pravidla
Metoda porovnání řetězců, která ve výchozím nastavení používá kulturálně specifické porovnávání řetězců, může mít potenciálně neúmyslné běhové chování, které neodpovídá záměru uživatele. Doporučujeme použít přetížení s parametrem StringComparison pro správnost a srozumitelnost záměru.
Toto pravidlo označí metody porovnání řetězců, které ve výchozím nastavení používají hodnotu specifickou pro kulturní StringComparison verzi. Další informace naleznete v tématu Porovnání řetězců, které používají aktuální kulturu.
Poznámka:
Pokud chcete zobrazit porušení pro všechny metody porovnání řetězců bez ohledu na výchozí porovnání řetězců používané metodou, použijte místo toho CA1307: Zadejte StringComparison pro jasnost.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, změňte metody porovnávání řetězců na přetížené metody, které přijímají výčet StringComparison jako parametr. 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 knihovna nebo aplikace není určena k lokalizaci.
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 CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310
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.CA1310.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.