Но если я хочу объединить 2
строки, тогда я предполагаю, что это
лучше (быстрее) сделать это без
StringBuilder. Это правильно?
Это действительно правильно, вы можете найти, почему точно объяснили очень хорошо на:
http://www.yoda.arachsys.com/csharp/stringbuilder.html
Подводя итог: если вы можете объединить строки за один раз, как
var result = a + " " + b + " " + c + ..
вам лучше без StringBuilder, поскольку выполняется только копирование (длина полученной строки вычисляется заранее.);
Для структуры типа
var result = a;
result += " ";
result += b;
result += " ";
result += c;
..
новые объекты создаются каждый раз, поэтому вы должны рассмотреть StringBuilder.
В конце статьи приведены следующие практические правила:
Правила большого пальца
Итак, когда вы должны использовать StringBuilder,
и когда вы должны использовать строку
операторы конкатенации?
Определенно используйте StringBuilder, когда
вы объединяете в нетривиальном
петля - особенно если вы не знаете
наверняка (во время компиляции) сколько
итерации, которые вы будете делать через
петля. Например, чтение файла
характер за один раз, создавая
Строка, как вы идете, используя оператор + =
потенциально самоубийство производительности.
Определенно используйте конкатенацию
оператор, когда вы можете (читаемо)
указать все, что должно быть
объединены в одном заявлении. (Если ты
иметь множество вещей, чтобы
объединить, рассмотреть вопрос о звонке
String.Concat явно - или
String.Join, если вам нужен разделитель.)
Не бойтесь разбить литералы
на несколько сцепленных битов -
результат будет таким же. Вы можете помочь
удобочитаемость, ломая длинный литерал
в несколько строк, например, с
без ущерба для производительности.
Если вам нужны промежуточные результаты
конкатенации чего-то
кроме подачи следующей итерации
конкатенации, StringBuilder не является
собираюсь помочь вам. Например, если
вы создаете полное имя из первого
имя и фамилию, а затем добавить
третья часть информации (
прозвище, может быть) до конца
только выгода от использования StringBuilder
если вам не нужно (имя +
фамилия) строка для других целей
(как мы делаем в примере, который создает
объект Person).
Если у вас есть несколько объединений
делать, и вы действительно хотите сделать их
в отдельных заявлениях это не
действительно важно, каким путем вы идете. Который
Более эффективный способ будет зависеть от
количество конкатенаций размеров
строки и в каком порядке
они соединены. Если вы действительно
считаю, что кусок кода, чтобы быть
узкое место, профиль или
сравните это в обе стороны.