2008-12-08 3 views
6

дубликат: String output: format or concat in C#?

Особенно в C# мира с помощью String.Format для всего действительно часто, как правило, в качестве VB.NET разработчика, если я не должен * Я не String.Format,String.Format или нет?

Я предпочитаю нормальный конкатенация, такие как:

V1 = V2 & "test-x" & V3 & "-;" 

мне это лучше, чем это:

V1 = String.Format("{0} test-x {1} -;", V2, V3) 

Я что-то упустил? Или это только личное предпочтение?

Причины для использования String.Format (Из ответов) (Постараюсь держать это на сегодняшний день)

  • локализации намного проще, если вы используете строка формата
  • Очевидно, что легче изменить формат ввода
  • это более читаемым (однако это личное)
  • Better Performance

** Иногда мне нужно изменить стиль или заменяющий материал динамически, то я использую String.Format *

ответ

14

Если вы когда-нибудь, чтобы локализовать приложение (и часто трудно исключить, что на старте), то String.Format должно быть намного предпочтительнее, по двум причинам:

  1. у вас есть только одна строка буквального для перевода
  2. Вы можете изменить порядок значений, которые могут сделать больше nse на другом языке.
0

Лично я считаю, что String.Format легче читать, строка представлена ​​в виде одного последовательного текста , Это зависит от того, сколько параметров есть, если вам нужно охотиться за правильным параметром, чтобы понять это, то ...

3

Хорошая статья здесь Карла Сегина: code better - use string.format, объясняя некоторые преимущества.

+1

поэтому в основном он просто выглядит лучше :) или читаемым, который сводится к личным предпочтениям, не так ли? – 2008-12-08 14:22:32

1

Первый метод очень трудно читать и даже больше типа отверстия. Кроме того, как только вы начнете делать много этих конкатенаций, есть соображения производительности, о которых нужно подумать.

+0

Я думал, что они были такими же, есть ли какие-то реальные проблемы с производительностью? – 2008-12-08 14:18:07

+0

Да. Так как строки неизменны в .NET, каждая конкатенация создает новую строку, которая должна быть собрана GC. string.Format подход совершенно другой (более StringBuilder-как). – TToni 2008-12-08 14:24:16

+0

хороший материал, узнал что-то новое сегодня. – 2008-12-08 14:25:25

1

Если вы фактически форматируете значения ({0: d} и т. Д.), String.Format намного лучше читать, чем конкатенация строк.

1

Для меня это зависит от содержания. Конкатенация строк создает дополнительные строковые объекты (потому что strings are immutable in .NET), хотя в основном это проблема с читабельностью.

Иногда это становится сложнее, когда вы хотите, чтобы поместить символы новой строки в строке, в этом случае я предпочитаю использовать что-то вроде:

StringBuilder.AppendLine(string.Format("Some text {0}.", "here")); 
0

Я считаю, что это скорее вопрос предпочтения. Однако, как только я начал использовать его регулярно, большая часть моей команды последовали этому примеру. Когда мы обсуждали это, было решено, что его легче понять и прочитать.

5

Каждого отправили о том, как читаемый String.Format это (который я принимаю, и он имеет нулевой реф и интернационализация преимущество да), но никто не упомянул, что это значительно медленнее, чем простая конкатенация (небольшое количество элементов) или используя StringBuilder (большое количество контаков).

Если производительность имеет значение или вы выполняете большое количество операций (так что производительность скоро будет), то вам следует избегать форматирования.

Edit: Ссылки как просили;)

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/