У меня есть ситуация, когда мне нужно объединить несколько строк, чтобы сформировать идентификатор класса. По сути, я просто зацикливаюсь в списке, чтобы получить значения объектов ToString, а затем объединить их.
foreach (MyObject o in myList)
result += o.ToString();
Ожидается, что список не будет содержать более 5 элементов (хотя это может быть, но это очень, очень незначительный случай) и обычно будет иметь от 1 до 3 элементов, обычно для него достаточно одного или двух элементов. *
Что бы повысить производительность, сохранив конкатенацию или используя StringBuilder?
StringBuilder bld = new StringBuilder()
foreach (MyObject o in myList)
bld.Append(o.ToString());
Я не уверен, что создание StringBuilder займет больше времени, чем стандартная конкатенация в наиболее обычном случае.
Это лениво, элементы в списке не изменяются после создания, поэтому идентификатор вызывается лениво при вызове.
Как примечание ... Должен ли я использовать фиксированный массив вместо списка? Получу ли я улучшение производительности или памяти, если я это сделаю? (Список используется только как IEnumerable в любом случае)
Более общий взгляд на вопрос: сколько строк достаточно, чтобы прекратить конкатенацию и начать сборку?
Стоит ли мне вообще проверять сценарий?
if (myList.Count > 4)
ConcatWithStringBuilder(myList);