Tengo un clasificador que realiza varias comparaciones. Resharper dice que debería cambiar de String.CompareTo
a String.CompareOrdinal
. ¿Esto realmente proporciona muchos beneficios o es algo para lo que debo ajustar las reglas de inspección?Resharper recomienda cambiar CompareTo a CompareOrdinal
CompareTo:
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);
});
La advertencia es "CompareTo es específico de la cultura" –
También relacionado: http://stackoverflow.com/questions/10941375/could-string-comparisons-really-differ-based-on-culture-when-the-string- is-guara –
Por lo tanto, desde un punto de vista de la resharper parece recomendarlo teniendo en cuenta la cultura – Adam