CA1309: Usare StringComparison ordinale
Proprietà | valore |
---|---|
ID regola | CA1309 |
Title | Usare StringComparison ordinale |
Categoria | Globalizzazione |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Un'operazione di confronto di stringhe nonlinguistica non imposta il StringComparison parametro su Ordinal o OrdinalIgnoreCase.
Descrizione regola
Molte operazioni sulle stringhe, soprattutto i System.String.Compare metodi e System.String.Equals , ora, forniscono un overload che accetta un System.StringComparison valore di enumerazione come parametro.
Quando si specifica StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, il confronto tra stringhe non è linguistico. Ovvero, le funzionalità specifiche del linguaggio naturale vengono ignorate quando vengono prese decisioni di confronto. Ignorando le caratteristiche del linguaggio naturale, le decisioni sono basate su semplici confronti di byte e non su tabelle di maiuscole e minuscole o di equivalenza con parametri per impostazioni cultura. Di conseguenza, impostando in modo esplicito il parametro su StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, il codice aumenta spesso la velocità, aumenta la correttezza e diventa più affidabile.
Come correggere le violazioni
Per correggere una violazione di questa regola, modificare il metodo di confronto tra stringhe in un overload che accetta l'enumerazione System.StringComparison come parametro e specificare Ordinal o OrdinalIgnoreCase. Puoi ad esempio modificare String.Compare(str1, str2)
in String.Compare(str1, str2, StringComparison.Ordinal)
.
Quando eliminare gli avvisi
È possibile eliminare un avviso da questa regola quando la libreria o l'applicazione è destinata a un gruppo di destinatari locale limitato o quando è necessario usare la semantica delle impostazioni cultura correnti.
Eliminare un avviso
Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none
su nel file di configurazione.
[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.