Condividi tramite


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.

Vedi anche