Condividi tramite


CA1309: Utilizza StringComparison ordinale

TypeName

UseOrdinalStringComparison

CheckId

CA1309

Category

Microsoft.Globalization

Breaking Change

Non sostanziale

Causa

Un'operazione di confronto di stringhe di tipo non linguistico non imposta il parametro StringComparison su Ordinal o OrdinalIgnoreCase.

Descrizione della regola

Molte operazioni sulle stringhe, soprattutto i metodi StringCompare() e StringEquals(), forniscono ora un overload che accetta un valore dell'enumerazione StringComparision come parametro.

Quando si specifica StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase, il confronto tra stringhe sarà di tipo non linguistico. In altre parole le funzionalità specifiche del linguaggio naturale vengono escluse dalle decisioni sui confronti. le quali vengono basate su semplici confronti di byte senza considerare l'utilizzo di maiuscole e minuscole o le tabelle di equivalenza, i cui parametri dipendono dalle impostazioni cultura. Di conseguenza, l'impostazione esplicita del parametro su StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase consente spesso di snellire il codice, di aumentarne la correttezza e di renderlo più affidabile.

Come correggere le violazioni

Per correggere una violazione di questa regola, impostare il metodo di confronto di stringhe su un overload che accetta l'enumerazione System.StringComparison come parametro e specificare Ordinal o OrdinalIgnoreCase. Cambiare ad esempio String.Compare(str1, str2) in String.Compare(str1, str2, StringComparison.Ordinal)

Esclusione di avvisi

È consigliabile non visualizzare un avviso di questa regola quando la libreria o l'applicazione è destinata a un pubblico locale limitato oppure quando è necessario utilizzare la semantica delle impostazioni cultura correnti.

Vedere anche

Riferimenti

CA1307: Specificare StringComparison

Altre risorse

Avvisi di globalizzazione