Возможный дубликат:
Вывод строки C #: формат или объединение ?
в чем польза от использования этого:
Console.WriteLine("{0}: {1}", e.Code, e.Reason);
ПРОТИВ. это:
Console.WriteLine(e.Code + ": " + e.Reason);
????
Возможный дубликат:
Вывод строки C #: формат или объединение ?
в чем польза от использования этого:
Console.WriteLine("{0}: {1}", e.Code, e.Reason);
ПРОТИВ. это:
Console.WriteLine(e.Code + ": " + e.Reason);
????
Для меня преимущества подвески string.Format
:
С точки зрения производительности я никогда не проводил никаких измерений; вполне может быть, что объединение происходит быстрее, чем кулон string.Format
.
Я всегда использую .Format () для удобочитаемости и, как следствие, уменьшения количества ошибок и преимуществ обслуживания. Конечно, это не имеет смысла, если вы относительно новичок в программировании, поскольку второй пример поначалу более интуитивно понятен. Первое кажется излишне сложным.
Однако, если вы выберете второй шаблон, у вас начнутся проблемы, когда у вас будет много переменных. Здесь легче оценить преимущества первого шаблона.
e.g
Console.Writeline(var1 + " " + var2 + "-" + var3 +
" some sort of additional text" + var4);
Обратите внимание на ошибку: мне нужен еще один пробел после «текста», но в этом примере это нелегко увидеть.
Однако, если я сделаю это по-другому:
Console.Writeline("{0} {1}-{2} some sort of additional text{3}",
var1, var2, var3, var4)
Понятнее, что происходит. Легче оценить конечный результат, если вы отделите форматирование от переменных, которые будут использоваться.
Если мы хотим думать еще дальше в долгосрочной перспективе, это помогает с глобализацией / настройкой. Если мы поместим эти строки формата в конфигурацию, мы сможем изменить форматирование или порядок переменных, не касаясь кода.
Практически с той лишь разницей, что первая позволяет управлять макетом.
string.Format("*{0:3}*",1); // * 1*
или управлять форматированием:
string.Format("*{0:c}*",1); // *$1.00*
Производительность конкатенации можно учитывать при выполнении большого количества операций в тесных циклах, и в этом случае StringBuilder.Append и StringBuilder.AppendFormat являются более предпочтительными. AppendFormat и string.Format очень близки с точки зрения производительности, поэтому нет необходимости заменять первое вторым.
Это сводится к следующему: «Когда лучше использовать String.Format или объединение строк».
См. Ответ на этот вопрос: Когда это лучше использовать String.Format против конкатенации строк?
Поскольку строки неизменяемы (невозможно изменить существующую строку, необходимо каждый раз создавать новую) строковый формат может иметь преимущества в производительности, поскольку он не создает столько ссылок на память.
result = string1 + " " + string2 + " " + string3
Это создает 10 ссылок
result = string.Format("{0} {1} {2}", string1, string2, string3)
Это создает 5 ссылок
+
) лучше всего подходит для конкатенации (достаточно небольшие наборы),StringBuilder
лучше всего, когда вам нужно построить цикл, аFormat
лучше всего при форматировании. Прирост производительности от использованияFormat
по сравнению с+
в лучшем случае незначителен. - person Cody Gray   schedule 26.01.2011