Resharper建议将CompareTo更改为CompareOrdinal

Ada*_*dam 12 c# resharper

我有一台进行各种比较的分拣机.Resharper说我应该String.CompareTo改为String.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 m1.CompareTo(m2);
    }

    return data1.SettingName.CompareTo(data2.SettingName);
});
Run Code Online (Sandbox Code Playgroud)

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);
});
Run Code Online (Sandbox Code Playgroud)

Sim*_*zie 17

Resharper担心如果您在使用不同默认字符编码的系统上运行代码,则比较可能会失败.CompareOrdinal是文化不变的,从而消除了这个问题.