Важно понимать, что строки неизменны, они не меняются. Поэтому в ЛЮБОЕ время, когда вы изменяете, добавляете, модифицируете или что-то еще, строка создает новую «версию» строки в памяти, а затем отдает старую версию для сборки мусора. Так что-то вроде этого:
string output = firstName.ToUpper().ToLower() + "test";
Это создаст строку (для вывода), затем создаст ТРИ другие строки в памяти (одну для: ToUpper (), ToLower () для вывода, а затем одну для объединения "test").
Так что, если вы не используете StringBuilder или string.Format, все, что вы делаете, будет создавать дополнительные экземпляры вашей строки в памяти. Это, конечно, проблема внутри цикла, где вы можете получить сотни или тысячи дополнительных строк. Надеюсь, это поможет