Рекомендации по сравнению строк [дубликат]
Возможный дубликат:
идут струны.Equals () и = = оператор действительно один и тот же?
Я знаю, что в c# можно сравнить строку с == и equals, но я хочу знать, что мне нужно использовать в соответствии с лучшими практиками. Обратите внимание, что мне нужно знать, одинакова ли она для String и string
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.