Для чего нужна конкатенация строк в C#?

«Для чего нужна конкатенация строк в C#?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Конкатенация строк — это операция объединения двух или более строк в одну новую строку. В C# она фундаментальна для динамического формирования текста: построения SQL-запросов (с осторожностью), сообщений для пользователя, логов, JSON/XML и URL.

Основные способы конкатенации в C#:

  1. Оператор ++=): Удобен для простых случаев, но неэффективен в циклах.

    string name = "John";
    string greeting = "Hello, " + name + "!"; // "Hello, John!"
  2. Метод String.Concat: Явный вызов, работает с массивами строк.

    string result = String.Concat("The answer is ", 42); // "The answer is 42"
    string[] words = { "C#", " ", "is", " ", "great" };
    result = String.Concat(words); // "C# is great"
  3. Метод String.Join: Объединяет коллекцию строк с указанным разделителем.

    var list = new List<string> { "apple", "orange", "banana" };
    string joined = String.Join(", ", list); // "apple, orange, banana"
  4. StringBuilder: Ключевой инструмент для множественных конкатенаций, особенно в циклах. Он избегает создания множества промежуточных строк в памяти.

    var sb = new StringBuilder();
    for (int i = 0; i < 1000; i++)
    {
        sb.AppendLine("Item #" + i); // Эффективно
    }
    string finalText = sb.ToString();
  5. Интерполяция строк ($""): Современный, читаемый и производительный способ (компилируется в вызов String.Format или String.Concat).

    int x = 5, y = 10;
    string summary = $"The sum of {x} and {y} is {x + y}.";

Важное правило: Всегда используйте StringBuilder для конкатенации внутри циклов. Использование оператора + в цикле создает новую строку на каждой итерации, что приводит к значительным накладным расходам на сборку мусора.