с .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, чтобы игнорировать регистр и тому подобное, но сейчас нет времени искать. Как уже говорили другие, это будет сделано для сортировки. Сравнение на равенство таким образом привело бы к ненужным накладным расходам.
Я уверен, что я пропускаю вещи, но я думаю, что этого должно быть достаточно, чтобы начать экспериментировать, если вам нужно больше деталей.