Рекомендации по сравнению строк [дубликат]
Возможный дубликат:
идут струны.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.