Який найефективніший спосіб об'єднати рядки?
StringBuilderвипадки використання можна знайти тут .
String.Formatна стероїдах. Котрий, на розумну ефективність, на одному лайнері крихітно повільніше, ніж +і String.Concat, але набагато кращий за ці, хоча і повільніше, ніж StringBuilderпри декількох дзвінках. Практично кажучи, відмінності в продуктивності такі, що, якби мені довелося вибрати лише один спосіб об'єднання, я вибрав би строкові інтерполяції, використовуючи $... Якщо двома способами, то додати StringBuilderдо моєї панелі інструментів. За допомогою цих двох способів ви налаштовані.
String.JoinВідповідь нижче не робить +справедливість і, практично кажучи, поганий шлях для конкатенації рядків, але це дивно висока продуктивність мудрого. Відповідь, чому цікава. String.Concatі String.Joinможе діяти на масиви, але String.Joinнасправді швидше. Мабуть, String.Joinдосить складний і більш оптимізований, ніж String.Concat, почасти тому, що він працює аналогічно тому, StringBuilderщо спочатку обчислює довжину рядка, а потім будує рядок, використовуючи ці знання, використовуючи UnSafeCharBuffer.
String.Joinтакож вимагає побудова масиву , який здається ресурси неефективного права? ... Виявляється, що +і String.Concatконструкт масивів для їх складових частин в будь-якому випадку. Отже, вручну створювати масив і подавати його String.Joinпорівняно швидше ... однак, StringBuilderвсе-таки випереджає String.Joinпрактично кожен практичний спосіб, хоча $лише трохи повільніше і набагато швидше на довгих рядках ... не кажучи вже про те, що використовувати це незручно і некрасиво, String.Joinякщо у вас є щоб створити масив для нього на місці.