Рекомендации по сравнению строк [дубликат]


Возможный дубликат:
идут струны.Equals () и = = оператор действительно один и тот же?

Я знаю, что в c# можно сравнить строку с == и equals, но я хочу знать, что мне нужно использовать в соответствии с лучшими практиками. Обратите внимание, что мне нужно знать, одинакова ли она для String и string

7 3
c#

7 ответов:

String и string точно такие же в C#. "Наилучшая практика" была бы идентична.

Следует ли использовать == или Equals, в случае строки, это несколько личное предпочтение. Я лично предпочитаю ==, так как его немного более читабельно (на мой взгляд) и гораздо короче печатать.

string действительно System.String, изменение сделано для вас компилятором. == просто звонит String.Equals.

Большинство разработчиков .Net, похоже, предпочитают использовать ключевое слово string вместо System.String или String.

Если вы не игнорируете case, то string1 == string2 является наиболее подходящим, потому что вам не нужно проверять ни одно значение на null, как это было бы здесь: string x = null;x.Equals("junk");.

Если вы хотите проигнорировать случай (так что STRING равно string), Используйте это:

string.Equals (string1, string2, StringComparison.CurrentCultureIgnoreCase)

(или одно из других значений вStringComparison .)

Так как C# имеет перегрузку операторов и ==,!= перегружены ответственность должна падать на человека человек, модифицирующий ваш код должен знать, чтобы проверить, если оператор = = или != перегружается, прежде чем предположить, что он выполняет сравнение объектов.

Примечание: Если вы хотите сделать эталонное сравнение, вы можете сделать следующее:

if( (object)a == b )

Они идентичны. (Хотя Equals имеет некоторые переопределения, но я предполагаю, что вы не говорите о них).

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

Если вы работаете в одиночку, выберите тот, который вам больше нравится!

String и string - это одно и то же внутренне.

Лично я бы использовать == для удобства чтения. Нет разницы в производительности между == и .Equals; == звонки .Equals за кулисы.

В соответствии с руководящими принципами фреймворка (или эффективного C# я забыл, который из них) лучше использовать String, когда вы хотите использовать класс и string, когда вы хотите объявить строковый тип:

string result = String.Format("You have {0} items.", items);

(хотя я бы использовал результат var, если это локальная переменная)

Что касается сравнения, я бы использовал строку.Compare (), так что вы можете использовать различные сравнения, такие как игнорировать case.