Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Конкатенация — это процесс добавления одной строки в конец другой строки. Сцепляйте строки с помощью оператора +. Для строковых литералов и строковых констант объединение происходит во время компиляции; объединение во время выполнения не происходит. Для строковых переменных объединение происходит только во время выполнения.
Подсказка
Вы можете использовать помощь ИИ для объединения строк.
Строковые литералы
В следующем примере длинный строковый литерал разбивается на меньшие строки, чтобы повысить читаемость исходного кода. Код объединяет маленькие строки для создания длинной строковой литералы. Части объединяются в одну строку во время компиляции. Нет затрат на производительность во время выполнения независимо от количества участвующих строк.
// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";
Console.WriteLine(text);
операторы + и +=
Для объединения строковых переменных можно использовать операторы + или +=, интерпол яцию строк или методы String.Format, String.Concat, String.Join или StringBuilder.Append. Оператор + прост в использовании и обеспечивает интуитивно понятный код. Даже если в одной инструкции используется несколько операторов +, содержимое строки копируется только один раз. В следующем коде показаны примеры использования операторов + и += для объединения строк:
string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();
// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
Console.WriteLine(str);
str += " How are you today?";
Console.WriteLine(str);
Интерполяция строк
В некоторых выражениях проще объединить строки с помощью интерполяции строк, как показано в следующем коде:
string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();
// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
Console.WriteLine(str);
str = $"{str} How are you today?";
Console.WriteLine(str);
Заметка
В операциях объединения строк компилятор C# обрабатывает пустую строку так же, как пустую строку.
Интерполяция строк позволяет инициализировать константную строку, если все выражения, используемые для заполнителей, также являются константными строками.
String.Format
Другим методом объединения строк является String.Format. Этот метод хорошо работает при создании строки из нескольких строк компонентов.
StringBuilder
В других случаях можно объединить строки в цикле, где фактическое количество исходных строк может быть большим. Класс StringBuilder был разработан для этих сценариев. Следующий код использует метод Append класса StringBuilder для объединения строк.
// Use StringBuilder for concatenation in tight loops.
var sb = new StringBuilder();
for (int i = 0; i < 20; i++)
{
sb.AppendLine(i.ToString());
}
Console.WriteLine(sb.ToString());
Дополнительные сведения о причинах выбора объединения строк или о классе StringBuilder.
String.Concat или String.Join
Другим вариантом объединения строк из коллекции является использование метода String.Concat. Используйте метод String.Join, если разделитель должен разделить исходные строки. Следующий код объединяет массив слов с помощью обоих методов:
string[] words = ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."];
var unreadablePhrase = string.Concat(words);
Console.WriteLine(unreadablePhrase);
var readablePhrase = string.Join(" ", words);
Console.WriteLine(readablePhrase);
LINQ и Enumerable.Aggregate
Наконец, можно использовать LINQ и метод Enumerable.Aggregate для объединения строк из коллекции. Этот метод объединяет исходные строки с помощью лямбда-выражения. Лямбда-выражение выполняет работу, чтобы добавить каждую строку в существующее накопление. Следующий пример объединяет массив слов, добавляя пробел между каждым словом в массиве:
string[] words = ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."];
var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
Console.WriteLine(phrase);
Этот параметр может привести к большему количеству выделений, чем другие методы объединения коллекций, так как он создает промежуточную строку для каждой итерации. Если оптимизация производительности важна, рассмотрите класс StringBuilder или метод String.Concat или String.Join для объединения коллекции вместо Enumerable.Aggregate.
Использование ИИ для объединения строк
Вы можете использовать средства ИИ, такие как GitHub Copilot, для создания кода C# для объединения строк. Вы можете настроить запрос, чтобы указать выходной формат, переменные и метод для использования в соответствии с вашими требованиями.
Ниже приведен пример запроса Copilot Chat:
Generate C# code to use string interpolation to build an output string:
"Hello [name], today's date is [current date]. You have [count] new notifications."
Use variables for: name is "John", date is today's date, and notification count is 3.
Format the date as mm/dd/yyyy.
Show the output.
Ознакомьтесь с предложениями Copilot, прежде чем применять их.
Дополнительные сведения см. в часто задаваемых вопросах Copilot .