Является ли String.Format столь же эффективным, как StringBuilder? - PullRequest
152 голосов
/ 09 августа 2008

Предположим, у меня есть строитель строк в C #, который делает это:

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);

Если так, то почему?

РЕДАКТИРОВАТЬ

После некоторых интересных ответов я понял, что, вероятно, мне следовало бы быть немного яснее в том, что я спрашивал. Я не так много просил о том, что быстрее при конкатенации строки, но что быстрее при введении одной строки в другую.

В обоих случаях выше я хочу вставить одну или несколько строк в середину предопределенной строки шаблона.

Извините за путаницу

Ответы [ 12 ]

0 голосов
/ 09 августа 2008

Это действительно зависит. Для небольших строк с небольшим количеством конкатенаций на самом деле быстрее просто добавлять строки.

String s = "String A" + "String B";

Но для более крупных (очень очень больших) строк более эффективно использовать StringBuilder.

0 голосов
/ 09 августа 2008

Я бы посоветовал этого не делать, поскольку String.Format не был предназначен для объединения, он был предназначен для форматирования вывода различных входных данных, например даты.

String s = String.Format("Today is {0:dd-MMM-yyyy}.", DateTime.Today);
...