Когда лучше использовать String.Format против конкатенации строк? - PullRequest
108 голосов
/ 18 ноября 2008

У меня есть небольшой фрагмент кода, который анализирует значение индекса для определения ввода ячейки в Excel. Это заставило меня задуматься ...

В чем разница между

xlsSheet.Write("C" + rowIndex.ToString(), null, title);

и

xlsSheet.Write(string.Format("C{0}", rowIndex), null, title);

Один "лучше", чем другой? И почему?

Ответы [ 14 ]

0 голосов
/ 30 октября 2009

Я предпочитаю формат String.Format относительно производительности

0 голосов
/ 18 ноября 2008

Я немного профилировал различные строковые методы, включая string.Format, StringBuilder и конкатенацию строк. Конкатенация строк почти всегда превосходила другие методы построения строк. Так что, если производительность является ключевой, то лучше. Однако, если производительность не критична, я лично нахожу string.Format, чтобы легче было следовать в коде. (Но это субъективная причина) Однако StringBuilder, вероятно, наиболее эффективен в отношении использования памяти.

0 голосов
/ 18 ноября 2008

строка. Формат, вероятно, является лучшим выбором, когда шаблон формата ("C {0}") хранится в файле конфигурации (например, Web.config / App.config)

0 голосов
/ 18 ноября 2008

Конкатенация строк занимает больше памяти по сравнению с String.Format. Поэтому лучший способ объединить строки - использовать объект String.Format или System.Text.StringBuilder.

Давайте рассмотрим первый случай: "C" + rowIndex.ToString () Давайте предположим, что rowIndex является типом значения, поэтому метод ToString () должен Box для преобразования значения в String, а затем CLR создает память для новой строки с обоими значениями.

Где в виде string.Format ожидает параметр объекта и принимает rowIndex в качестве объекта и преобразует его во внутреннюю строку. Это будет Boxing, но он присущ и не будет занимать столько памяти, сколько в первом случае.

Для коротких струн это не имеет большого значения, я думаю ...

...