Строка. Формат или нет?
Дубликат из: Вывод строки: формат или конкат в C#?
Особенно в мире C# использование String.Format для всех действительно распространено, обычно как разработчик VB.NET, если мне не нужно * я не String.Format,
Я предпочитаю нормальную конкатенацию строк, такую как:
V1 = V2 & "test-x" & V3 & "-;"
для меня это лучше, чем это:
V1 = String.Format("{0} test-x {1} -;", V2, V3)
Я что-то пропустил? Или это просто личное предпочтение?
Причины использовать String.Format (из ответов) (я постараюсь держать это в курсе)
- Локализация намного проще, если вы используете формат строки
- Очевидно, что легче изменить формат ввода
- Это более читабельно (однако это личное)
- Лучшая производительность
** Иногда мне нужно изменить стиль или заменить материал динамически, тогда я использую String.Format*
8 ответов
Если вы когда-нибудь собираетесь локализовать свое приложение (и это часто трудно исключить с самого начала), то String.Format будет предпочтительнее по двум причинам:
- У вас есть только один строковый литерал для перевода
- Вы можете изменить порядок значений, что может иметь больше смысла на другом языке.
Все писали о том, насколько читаемым является string.format (что я принимаю, да и да, у него есть нулевые ref и преимущества интернационализации), но никто не упоминал, что он значительно медленнее, чем простая конкатенация строк (небольшое количество элементов) или использование StringBuilder (большое количество concats).
Если производительность имеет значение или вы выполняете большое количество операций (поэтому производительность скоро будет иметь значение), то вам следует избегать форматирования.
Редактировать: Ссылки по запросу;)
http://msmvps.com/blogs/jon_skeet/archive/2008/10/06/formatting-strings.aspx
http://blog.briandicroce.com/2008/02/04/stringbuilder-vs-string-performance-in-net/
Хорошая статья Карла Сегина: лучше кодируйте - используйте string.format, объясняющий некоторые преимущества.
Для меня это зависит от содержания. Конкатенация строк создает дополнительные строковые объекты (потому что строки неизменны в.NET), хотя в основном это проблема читабельности.
Иногда это усложняется, когда вы хотите поместить символы новой строки в строку, и в этом случае я склонен использовать что-то вроде:
StringBuilder.AppendLine(string.Format("Some text {0}.", "here"));
Если вы на самом деле форматируете значения ({0:d} и т. Д.), String.Format лучше читать, чем конкатенацию строк.
Первый метод очень сложен для чтения и даже более скучен для печати. Кроме того, как только вы начнете выполнять много таких объединений, есть соображения производительности, о которых стоит подумать.
Лично я считаю, что String.Format легче читать, строка представлена в виде одного последовательного текста. Хотя это зависит от того, сколько существует параметров, если вам нужно найти правильный параметр, чтобы понять его, то...
Я считаю, что это скорее вопрос предпочтений. Однако, как только я начал использовать его регулярно, большая часть моей команды последовала его примеру. Когда мы обсуждали это, было решено, что просто легче понять и прочитать.