Допустим, у вас есть:
List<string> los = new List<string>();
В этом сумасшедшем функциональном мире, в котором мы живем в эти дни, один из них был бы лучшим для создания одной строки путем объединения этих:
String.Join(String.Empty, los.ToArray());
StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));
string disp = los.Aggregate<string>((a, b) => a + b);
или обычный старый StringBuilder foreach
ИЛИ есть ли лучший способ?
c#
string
performance
functional-programming
maxfridbe
источник
источник
Ответы:
Я бы пошел с вариантом А:
Я рассуждаю так, потому что метод Join был написан для этой цели. Фактически, если вы посмотрите на Reflector, вы увидите, что небезопасный код был использован для его реальной оптимизации. Два других также РАБОТАЮТ, но я думаю, что функция Join была написана для этой цели, и, я думаю, наиболее эффективная. Хотя я могу ошибаться ...
Согласно @Nuri YILMAZ без
.ToArray()
, но это .NET 4+:источник
Если вы просто хотите объединить строки, используйте string.Concat () вместо string.Join ().
источник
Если вы используете .net 4.0, вы можете использовать сортировщик:
источник
String.Join () реализован довольно быстро, и, поскольку у вас уже есть коллекция рассматриваемых строк, это, вероятно, лучший выбор. Прежде всего, он кричит "Я присоединяюсь к списку строк!" Всегда приятно.
источник
источник
Мой голос - строка.
Нет необходимости в лямбда-вычислениях и создании временных функций, меньше вызовов функций, меньше стеков и выталкиваний.
источник