StringBuilder.Append для массива строк? - PullRequest
2 голосов
/ 26 марта 2012

Скажите, у меня есть StringBuilder объект

var sb = new StringBuilder();

И произвольный массив строк

var s = new []{"a","b","c"};

Это самый быстрый способ вставить их в экземпляр stringbuilder?

sb.Append(string.join(string.empty, s));

Или StringBuilder имеет функцию, которую я пропустил?

Редактировать: Извините, я не знаю, сколько предметов будет содержать sb или сколько предметов может быть в каждой строке [].

Ответы [ 5 ]

7 голосов
/ 26 марта 2012

Если вы имеете в виду «самый быстрый» самый производительный, чем лучший, используйте:

for(int i = 0; i < myArrayLen; i++)
  sb.Append(myArray[i]);
1 голос
/ 26 марта 2012

Верьте или нет, но string.Concat работает быстрее, чем StringBuilder, когда строки 4 / 5.
Эта статья очень хорошо обсуждает вопрос.

1 голос
/ 26 марта 2012

string.Concat(...) должно быть быстрее, чем string.Join("", ...).Кроме того, это зависит от того, что еще вы делаете со своим StringBuilder.Если вы выполняете только несколько конкатенаций, то не использовать его быстрее.

Больше контекста всегда помогает!

0 голосов
/ 07 апреля 2014

Чтобы сделать это в одной строке без цикла, вы можете сделать это:

sb.Append(String.Join(Environment.NewLine, s));

и также будет работать, где s - любой тип

IEnumerable<string>
0 голосов
/ 26 марта 2012

Полагаю, у вас уже есть правильный ответ:

sb.Append(string.join(string.empty, s))
...