В чем разница между различными методами сравнения строк

Возможный дубликат:
Различия в методах сравнения строк в С#

В .NET существует много методов сравнения строк, я просто хочу подтвердить, какой из них лучше всего использовать, учитывая производительность.

string.Equals()

string.Compare()

string.CompareTo()

string.CompareOrdinal()

string.ReferenceEquals()

if (str1 == str2)

Ответ 1

Снято с msdn

string.Equals

Определяет, имеет ли этот экземпляр и указанный объект, который также должен быть объектом String, одинаковое значение.

string.Compare Сравнивает два заданных объекта String и возвращает целое число, которое указывает их относительное положение в порядке сортировки.

string.CompareTo Сравнивает этот экземпляр с указанным объектом или String и возвращает целое число, которое указывает, предшествует ли этот экземпляр, следует или появляется в той же позиции в порядке сортировки, что и указанный объект или строка.

string.CompareOrdinal Сравнивает два заданных объекта String, оценивая числовые значения соответствующих объектов Char в каждой строке.

Операторы равенства строк Предопределенные операторы равенства строк:

bool operator == (строка x, строка y); bool operator!= (строка x, строка y); Два строковых значения считаются равными, если выполняется одно из следующих значений:

Оба значения равны нулю. Оба значения представляют собой ненулевые ссылки на экземпляры строк, которые имеют одинаковые длины и одинаковые символы в каждой позиции символа. Операторы равенства строк сравнивают строковые значения, а не ссылки на строки. Когда два отдельных экземпляра строки содержат одну и ту же последовательность символов, значения строк равны, но ссылки разные. Как описано в разделе 7.9.6, операторы равенства ссылочного типа могут использоваться для сравнения строковых ссылок вместо строковых значений.