Создание строк
Конкатенация и StringBuilder.
«Создание строк» — бесплатный урок C# Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Объединение строк с помощью +
Самый простой способ создать строку — объединить фрагменты оператором +.
Это называется конкатенацией. Такой способ хорошо подходит для небольшого количества фрагментов, например для объединения приветствия с именем.
class Program
{
static void Main()
{
string name = "Sam";
string greeting = "Hi, " + name;
System.Console.WriteLine(greeting);
}
}Интерполяция строк
Интерполяция — более удобный способ вставлять значения в текст.
Поставьте $ перед строкой и заключите переменные в фигурные скобки. Значения автоматически подставятся на нужные места.
class Program
{
static void Main()
{
string name = "Sam";
int age = 9;
System.Console.WriteLine($"{name} is {age}");
}
}Стоимость += в циклах
Использовать += для увеличения строки внутри цикла медленно.
Поскольку строки неизменяемы, каждый оператор += создаёт совершенно новую строку и копирует все старые символы. При большом количестве итераций это напрасно расходует время и память.
string result = "";
for (int i = 0; i < 1000; i++)
result += i; // creates many stringsЗнакомство с StringBuilder
StringBuilder предназначен для эффективной сборки текста.
Он находится в пространстве имён System.Text. Вместо создания новой строки при каждом добавлении он увеличивает внутренний буфер, что значительно быстрее при большом количестве добавлений.
using System.Text;
StringBuilder sb = new StringBuilder();Добавление с помощью StringBuilder
Вызовите Append, чтобы добавить текст в StringBuilder.
Можно добавлять множество фрагментов один за другим. Конструктор хранит всё в своём буфере, пока Вы не запросите итоговую строку.
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.Append(", world");
System.Console.WriteLine(sb.ToString());
}
}Получение итоговой строки
Сам объект StringBuilder не является объектом string.
Завершив добавление, вызовите ToString, чтобы получить готовый текст. После этого его можно вывести или сохранить как обычную строку.
using System.Text;
StringBuilder sb = new StringBuilder();
sb.Append("Done");
string final = sb.ToString();Добавление в цикле
Именно здесь StringBuilder особенно полезен.
Добавляйте текст внутри цикла: конструктор будет эффективно увеличиваться, избегая копирований, которые создавал бы оператор +=. Эта программа создаёт строку из чисел.
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++)
sb.Append(i);
System.Console.WriteLine(sb.ToString());
}
}AppendLine
AppendLine работает как Append, но также добавляет перевод строки после текста.
Это удобно для создания многострочного вывода, например списка, в котором каждый элемент находится в отдельной строке.
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Line 1");
sb.AppendLine("Line 2");
System.Console.Write(sb.ToString());
}
}Создание из символов
Можно добавлять и отдельные значения char, а не только целые строки.
Это полезно при преобразовании текста посимвольно, например когда Вы переводите каждую букву в верхний регистр, создавая новый результат.
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
foreach (char c in "loud")
sb.Append(char.ToUpper(c));
System.Console.WriteLine(sb.ToString());
}
}Когда использовать каждый подход
Для небольшого количества фрагментов оператор + или интерполяция понятны и вполне подходят.
Для создания текста в цикле или объединения множества фрагментов выбирайте StringBuilder. Общее правило таково: для небольшого числа объединений используйте операторы, а для большого — конструктор.
string.Join
Если у Вас уже есть набор фрагментов, string.Join объединит их с помощью разделителя.
Сначала передайте разделитель, затем элементы. Для простых списков это лаконичная альтернатива циклу.
string[] parts = { "a", "b", "c" };
string joined = string.Join("-", parts);
// joined is "a-b-c"Быстрая проверка
Проверьте, насколько хорошо Вы поняли создание строк.
Итоги
Используйте + или интерполяцию для объединения нескольких строк, а string.Join — для списка фрагментов.
Для создания текста в циклах выбирайте StringBuilder: вызывайте Append или AppendLine, а затем ToString, чтобы получить результат. Это позволяет избежать затратных копирований, которые создаёт +=, поскольку строки неизменяемы.
Часто задаваемые вопросы
Урок «Создание строк» бесплатный?
Да — полный текст урока «Создание строк» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Создание строк»?
Конкатенация и StringBuilder. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Создание строк»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.