Який найефективніший спосіб об'єднати рядки?
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
якщо у вас є щоб створити масив для нього на місці.