с .Equals, вы также получаете опции StringComparison. очень удобно игнорировать дела и другие вещи.
Кстати, это будет оцениваться как ложное
string a = "myString";
string b = "myString";
return a==b
Так как == сравнивает значения a и b (которые являются указателями), это будет иметь значение true, только если указатели указывают на один и тот же объект в памяти. .Equals разыменовывает указатели и сравнивает значения, хранящиеся в указателях.
a.Equals (б) будет верно здесь.
и если вы измените b на:
b = "MYSTRING";
тогда a.Equals (b) ложно, но
a.Equals(b, StringComparison.OrdinalIgnoreCase)
будет правдой
a.CompareTo (b) вызывает строковую функцию CompareTo, которая сравнивает значения в указателях и возвращает <0, если значение, хранящееся в a, меньше значения, хранящегося в b, возвращает 0, если a.Equals (b) равно true и> 0 в противном случае. Тем не менее, это чувствительно к регистру, я думаю, что есть варианты для CompareTo, чтобы игнорировать регистр и тому подобное, но сейчас нет времени искать.
Как уже говорили другие, это будет сделано для сортировки. Подобное сравнение на равенство приведет к ненужным накладным расходам.
Я уверен, что я пропускаю вещи, но я думаю, что этой информации должно быть достаточно, чтобы начать экспериментировать, если вам нужно больше деталей.