Особенно в мире 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 *





Лично я считаю, что String.Format легче читать, строка представлена как один последовательный текст. Хотя это зависит от того, сколько параметров есть, если вам нужно искать правильный параметр, чтобы понять его, тогда ...
Хорошая статья Карла Сегина: код лучше - используйте string.format, объясняющая некоторые преимущества.
Первый метод очень труден для чтения и еще более утомителен для набора текста. Кроме того, как только вы начнете выполнять множество таких конкатенаций, нужно подумать о соображениях производительности.
Я думал, что они точно такие же, есть ли какие-то реальные проблемы с производительностью?
Ага. Поскольку строки неизменяемы в .NET, каждая конкатенация создает новую строку, которая должна быть собрана сборщиком мусора. string.Format использует совершенно другой подход (больше похожий на StringBuilder).
хорошие вещи, узнал что-то новое сегодня.
@TToni: Нет, компилятор вызывает String.Concat с соответствующими строками. Это не похоже на то, что a + b + c + d включает 3 этапа конкатенации.
Если вы на самом деле форматируете значения ({0: d} и т. д.), String.Format намного лучше читать, чем конкатенацию строк.
Для меня это зависит от содержания. Объединение строк действительно создает дополнительные строковые объекты (потому что строки неизменяемы в .NET), хотя в основном это проблема читаемости.
Иногда возникает сложность, когда вы хотите поместить символы новой строки в строку, и в этом случае я обычно использую что-то вроде:
StringBuilder.AppendLine(string.Format("Some text {0}.", "here"));
Плохой пример - используйте вместо этого AppendFormat, а затем AppendLine без аргументов.
Знаете, вы хорошо замечаете - мне никогда не удавалось выбрать «лучший» способ использования методов StringBuilder.AppendLine / AppendFormat. Мне действительно нужен метод AppendLineFormat. :) Вы имеете в виду это: body.AppendFormat ("Ths {0}", "sfdsf"). AppendLine ();
@Neil: Ага, хотя я бы тоже обычно делал это отдельным заявлением, если только я не делаю много этого.
Если вы когда-нибудь собираетесь локализовать свое приложение (а это часто бывает трудно исключить с самого начала), то предпочтительнее использовать String.Format по двум причинам:
это хорошая причина использовать String.Format, спасибо, что указали на это.
«Вы можете изменить порядок значений» - как это поможет вам на другом языке?
Первое, что приходит мне в голову: адреса, которые отформатированы по-разному по всему миру (например, сначала zip, затем город - или наоборот) ...
«Вы можете изменить порядок значений»> На самом деле это чертовски важно, потому что у языков есть разные грамматики, и иногда вам нужно перевернуть предложение, имеющее смысл на другом языке. Одно из препятствий, с которыми я столкнулся в приложении ASP много лет назад.
Я считаю, что это скорее вопрос предпочтений. Однако как только я начал использовать его регулярно, большая часть моей команды последовала его примеру. Когда мы обсуждали это, было решено, что просто легче понять и прочитать.
Все писали о том, насколько удобочитаема string.format (что я принимаю, и у нее есть null ref и преимущества интернационализации, да), но никто не упомянул, что значительно медленнее, чем простая конкатенация строк (небольшое количество элементов) или использование StringBuilder (большое количество конкатс).
Если производительность имеет значение или вы выполняете большое количество операций (поэтому производительность скоро будет иметь значение воля), вам следует избегать форматирования.
Обновлено: ссылки по запросу;)
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/
Не стесняйтесь ссылаться на msmvps.com/blogs/jon_skeet/archive/2008/10/06/… в своем ответе :)
Ха! Именно эта статья заставила меня протестировать ее сам пару месяцев назад. Имена легко забываются, но содержание запоминается.
так что в основном это просто выглядит лучше :) или читабельным, что сводится к личным предпочтениям, не так ли?