У меня есть ситуация, когда мне нужно конкатенировать несколько строк, чтобы сформировать идентификатор класса. В основном я просто зацикливаюсь в списке, чтобы получить значения 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 потребуется больше времени, чем стандартная конкатенация для наиболее обычного случая.
Это лениво, элементы в списке не меняются после создания, поэтому id лениво создается один раз при вызове.
Как побочная заметка... Должен ли я использовать фиксированный массив вместо списка? Могу ли я получить какую-либо производительность или улучшить память, если я это сделаю? (Список используется только как IEnumerable)
Более общий вид вопроса может состоять в том, сколько строк достаточно, чтобы прекратить конкатенацию и начать строить?
Должен ли я даже проверить сценарий сценария?
if (myList.Count > 4)
ConcatWithStringBuilder(myList);