12 votes

Resharper recommande de remplacer CompareTo par CompareOrdinal

J'ai une trieuse qui effectue diverses comparaisons. Resharper indique que je devrais passer de String.CompareTo a String.CompareOrdinal . Cela présente-t-il vraiment un avantage ou dois-je adapter les règles d'inspection en conséquence ?

Comparer à :

config.Sort(delegate(configData data1, configData data2)
{
    if (data1.SettingName.Equals(data2.SettingName))
    {
        string m1 = data1.SettingMachine;
        string m2 = data2.SettingMachine;
        if (m1 == null)
            m1 = string.Empty;
        if (m2 == null)
            m2 = string.Empty;
        return m1.CompareTo(m2);
    }

    return data1.SettingName.CompareTo(data2.SettingName);
});

CompareOrdinal :

config.Sort(delegate(configData data1, configData data2)
{
    if (data1.SettingName.Equals(data2.SettingName))
    {
        string m1 = data1.SettingMachine;
        string m2 = data2.SettingMachine;
        if (m1 == null)
            m1 = string.Empty;
        if (m2 == null)
            m2 = string.Empty;
        return String.CompareOrdinal(m1, m2); ;
    }

    return String.CompareOrdinal(data1.SettingName, data2.SettingName);
});

17voto

Simon MᶜKenzie Points 3222

Resharper craint que la comparaison échoue si vous exécutez votre code sur un système qui utilise un autre codage de caractères par défaut. CompareOrdinal est indépendant de la culture, ce qui élimine le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X