Partager via


Utiliser StringComparison avec la valeur Ordinal

Mise à jour : novembre 2007

TypeName

UseOrdinalStringComparison

CheckId

CA1309

Catégorie

Microsoft.Globalization

Modification avec rupture

Modification sans rupture

Cause

Opération de comparaison de chaînes non linguistique qui n'affecte pas au paramètre StringComparison la valeur Ordinal ou OrdinalIgnoreCase.

Description de la règle

De nombreuses opérations de chaîne, dont les plus importantes sont les méthodes Compare() et Equals(), fournissent maintenant une surcharge qui accepte une valeur d'énumération StringComparision en tant que paramètre.

Lorsque vous spécifiez StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, la comparaison de chaînes est non linguistique. Autrement dit, les fonctionnalités qui sont spécifiques au langage naturel sont ignorées lors de la prise de décisions de comparaison. Cela signifie les décisions reposent sur de simples comparaisons d'octets et ignorent la casse ou les tables d'équivalences paramétrables par la culture. En conséquence, en affectant explicitement au paramètre la valeur StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, votre code gagne souvent en rapidité, tout en devenant plus correct et plus fiable.

Comment corriger les violations

Pour corriger une violation de cette règle, substituez à la méthode de comparaison de chaînes une surcharge qui accepte l'énumération StringComparison en tant que paramètre et spécifiez Ordinal ou OrdinalIgnoreCase. Par exemple, remplacez String.Compare(str1, str2) par String.Compare(str1, str2, StringComparison.Ordinal).

Quand supprimer les avertissements

Il est possible de supprimer sans risque un avertissement de cette règle quand la bibliothèque ou l'application est destinée à un parc d'utilisateurs local limité ou lorsque la sémantique de la culture actuelle doit être utilisée.

Voir aussi

Référence

Spécifier StringComparison

Autres ressources

Avertissements liés à la globalisation