Предположим, у меня есть StringBuilder в C#, который делает это:ли String.Format так эффективно, как StringBuilder
StringBuilder sb = new StringBuilder();
string cat = "cat";
sb.Append("the ").Append(cat).(" in the hat");
string s = sb.ToString();
это будет столь же эффективным или любой более эффективным, как имеющие:
string cat = "cat";
string s = String.Format("The {0} in the hat", cat);
Если так , Зачем?
EDIT
После некоторых интересных ответов я понял, что я, вероятно, должен был немного яснее, в чем я спрашивал. Я не столько просил, чтобы ускорить конкатенирование струны, но быстрее на впрыскивание одна строка в другую.
В обоих случаях выше Я хочу вставить одну или несколько строк в середину предопределенной строки шаблона.
Извините за сумбур
Пожалуйста, оставьте их открытыми для обеспечения будущих улучшений. – 2008-09-23 17:52:45
В сценарии с особым случаем самый быстрый из них не является ни тем, ни другим: если подлежащая замене часть равна размеру новой части, вы можете изменить строку на месте. К сожалению, для этого требуется отражение или небезопасный код и сознательно нарушает неизменность строки. Не хорошая практика, но если скорость - проблема ... :) – Abel 2009-11-04 12:53:59
в приведенном выше примере `` `string s =" «+ cat +» в шляпе »;` `` может быть самым быстрым, если только он не используется в цикле, и в этом случае быстрее всего будет с `` `` StringBuilder `` `` инициализирован вне цикла. – 2016-09-24 10:12:48