Сравнение строк в .NET - PullRequest
       8

Сравнение строк в .NET

2 голосов
/ 17 февраля 2012

В чем разница (вкратце) между (.NET)

myString == otherString

и

myString.CompareTo(otherString) == 0

Ответы [ 6 ]

8 голосов
/ 17 февраля 2012

Нет никакой разницы, кроме случаев, когда myString равен null, и в этом случае myString.CompareTo(otherString) выдает ошибку (NullReferenceException).Кроме того, использование CompareTo немного медленнее, чем ==.

Используйте CompareTo только в том случае, если вам интересно узнать, находится ли строка до или после другой в алфавитной сортировке.Например, "Car".CompareTo("Cat") возвращает -1, потому что "Car" стоит перед "Cat" при алфавитном порядке.

2 голосов
/ 17 февраля 2012

CompareTo должен только использоваться для оценки порядка. Может случиться так, что по любой причине две строки сравнивают одно и то же для целей упорядочения, но их не следует считать равными (то есть == и Equals могут возвращать false).

Цитировать документацию :

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

Акцент добавлен - обратите внимание, что не говорит, что два объекта равны.

1 голос
/ 17 февраля 2012

С здесь :

Метод CompareTo был разработан главным образом для использования в сортировке или алфавитные операции. Не следует использовать, когда основной Цель вызова метода - определить, являются ли две строки эквивалент. Чтобы определить, эквивалентны ли две строки, вызовите Метод равных.

Метод Equals более уместен. С здесь разница между Equals и == заключается в том, что Equals требует, чтобы его параметр был ненулевым, а == - нет. Кроме того, == реализован для использования Equals, поэтому Equals всегда будет иметь лучшую производительность.

1 голос
/ 17 февраля 2012

Предполагая, что вы имели в виду ==, а не =

CompareTo реализует интерфейс IComparable.Возвращает целое число.

1 голос
/ 17 февраля 2012

Предполагая, что вы имели в виду

myString == otherString

видимой разницы нет.

0 голосов
/ 17 февраля 2012

Основное назначение метода myString.CompareTo (otherString) - использовать его для сортировки или размещения по алфавиту. операции. Его не следует использовать, когда основной целью является проверка равенства строк.

Чтобы определить, эквивалентны ли две строки, вызовите метод Equals. "

Лучше использовать .Equals вместо .CompareTo при поиске исключительно равенства. так как я также думаю, что это быстрее для компилятора, чем операция ==.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...