Я просматриваю AppendFormat
сопровождаемый AppendLine
как не только более читаемый, но также и более производительный, чем вызов AppendLine(string.Format(...))
.
последний создает совершенно новую строку и затем добавляет ее оптовая торговля в существующего разработчика. Я не собираюсь идти до высказывания "Почему использование беспокойства StringBuilder тогда?" но это действительно кажется немного против духа StringBuilder.
String.format создает объект StringBuilder внутренне. Путем выполнения
sbuilder.AppendLine( String.Format( "{0} line", "First"));
создается дополнительный экземпляр строкового разработчика, со всеми ее издержками.
<час>Отражатель на mscorlib, Commonlauageruntimelibary, Системе. Строка. Формат
public static string Format(IFormatProvider provider, string format, params object[] args)
{
if ((format == null) || (args == null))
{
throw new ArgumentNullException((format == null) ? "format" : "args");
}
StringBuilder builder = new StringBuilder(format.Length + (args.Length * 8));
builder.AppendFormat(provider, format, args);
return builder.ToString();
}
Если производительность важна, старайтесь избегать AppendFormat () полностью. Используйте несколько Добавляют () или AppendLine () вызовы вместо этого. Это действительно делает Ваш код больше и менее читаемым, но это быстрее, потому что никакой строковый парсинг не должен быть сделан. Строковый парсинг медленнее, чем Вы могли бы вообразить.
я обычно использую:
sbuilder.AppendFormat("{0} line", "First");
sbuilder.AppendLine();
sbuilder.AppendFormat("{0} line", "Second");
sbuilder.AppendLine();
, Если производительность не очень важна, в этом случае я использовал бы:
sbuilder.Append("First");
sbuilder.AppendLine(" line");
sbuilder.Append("Second");
sbuilder.AppendLine(" line");
(Конечно, это имело бы больше смысла если "Первый" и "Второй" где не строковые литералы)
AppendFormat () намного более читаем, чем AppendLine (Строка. Формат ())
Я предпочитаю эту структуру:
sbuilder.AppendFormat("{0} line\n", "First");
, Хотя по общему признанию существует что-то, чтобы быть сказанным для того, чтобы выделить разрывы строки.
Это просто положительно ужасно для простого использования
sbuilder.AppendFormat("{0} line\n", first);
? Я имею в виду, я знаю, что это не платформенно независимо или что бы то ни было, но в 9 из 10 случаев, это сделало задание.