Como: Concatenar várias cadeias de caracteres (Guia de C#)How to: Concatenate Multiple Strings (C# Guide)

Concatenação é o processo de acrescentar uma cadeia de caracteres ao final de outra cadeia de caracteres.Concatenation is the process of appending one string to the end of another string. Você concatena cadeias de caracteres usando o operador +.You concatenate strings by using the + operator. Para literais de cadeia de caracteres e constantes de cadeia de caracteres, a concatenação ocorre em tempo de compilação; não ocorre nenhuma concatenação de tempo de execução.For string literals and string constants, concatenation occurs at compile time; no run-time concatenation occurs. Para variáveis de cadeia de caracteres, a concatenação ocorre somente em tempo de execução.For string variables, concatenation occurs only at run time.

Observação

Os exemplos de C# neste artigo são executados no executador de código embutido Try.NET e no playground.The C# examples in this article run in the Try.NET inline code runner and playground. Clique no botão Executar para executar um exemplo em uma janela interativa.Select the Run button to run an example in an interactive window. Ao executar o código, é possível modificá-lo e executar o código modificado clicando em Executar novamente.Once you execute the code, you can modify it and run the modified code by selecting Run again. O código modificado será executado na janela interativa ou, se a compilação falhar, a janela interativa exibirá todos as mensagens de erro do compilador C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

O exemplo a seguir usa a concatenação para dividir um literal de cadeia de caracteres longo em cadeias de caracteres menores, a fim de melhorar a legibilidade no código-fonte.The following example uses concatenation to split a long string literal into smaller strings in order to improve readability in the source code. Essas partes são concatenadas em uma única cadeia de caracteres em tempo de compilação.These parts are concatenated into a single string at compile time. Não há custos de desempenho em tempo de execução, independentemente da quantidade de cadeias de caracteres envolvidas.There is no run-time performance cost regardless of the number of strings involved.

// 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.";

System.Console.WriteLine(text);

Para concatenar variáveis de cadeia de caracteres, você pode usar os operadores + ou +=, a interpolação de cadeia de caracteres ou os métodos String.Format, String.Concat, String.Join ou StringBuilder.Append.To concatenate string variables, you can use the + or += operators, string interpolation or the String.Format, String.Concat, String.Join or StringBuilder.Append methods. O operador + é fácil de usar e torna o código intuitivo.The + operator is easy to use and makes for intuitive code. Mesmo ao usar vários operadores + em uma instrução, o conteúdo da cadeia de caracteres será copiado apenas uma vez.Even if you use several + operators in one statement, the string content is copied only once. O código a seguir mostra dois exemplos de como usar os operadores + e += para concatenar cadeias de caracteres:The following code shows examples of using the + and += operators to concatenate strings:

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 + ".";
System.Console.WriteLine(str);

str += " How are you today?";
System.Console.WriteLine(str);

Em algumas expressões, é mais fácil concatenar cadeias de caracteres usando a interpolação de cadeia de caracteres, conforme mostra o seguinte código:In some expressions, it's easier to concatenate strings using string interpolation, as the following code shows:

string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();

// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);

str = $"{str} How are you today?";
System.Console.WriteLine(str);

Observação

Em operações de concatenação de cadeia de caracteres, o compilador C# trata uma cadeia de caracteres nula da mesma maneira que uma cadeia de caracteres vazia.In string concatenation operations, the C# compiler treats a null string the same as an empty string.

Outro método para concatenar cadeias de caracteres é o String.Format.Other method to concatenate strings is String.Format. Esse método funciona bem quando você está criando uma cadeia de caracteres com base em um pequeno número de cadeias de caracteres de componente.This method works well when you are building a string from a small number of component strings.

Em outros casos, você pode combinar cadeias de caracteres em um loop em que você não sabe quantas cadeias de caracteres de origem você está combinando, sendo que o número real de cadeias de caracteres de origem pode ser grande demais.In other cases you may be combining strings in a loop, where you don't know how many source strings you are combining, and the actual number of source strings may be quite large. A classe StringBuilder foi projetada para esses cenários.The StringBuilder class was designed for these scenarios. O código a seguir usa o método Append da classe StringBuilder para concatenar cadeias de caracteres.The following code uses the Append method of the StringBuilder class to concatenate strings.

// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
    sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());

Você pode ler mais sobre os motivos para escolher a concatenação de cadeia de caracteres ou a classe StringBuilderYou can read more about the reasons to choose string concatenation or the StringBuilder class

Outra opção para unir cadeias de caracteres de uma coleção é usar o método String.Concat.Another option to join strings from a collection is to use String.Concat method. Use o método String.Join se desejar separar as cadeias de caracteres de origem por um delimitador.Use String.Join method if source strings should be separated by a delimeter. O código a seguir combina uma matriz de palavras usando os dois métodos:The following code combines an array of words using both methods:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);

var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);

Por fim, você pode usar LINQ e o método Enumerable.Aggregate para unir cadeias de caracteres de uma coleção.At last, you can use LINQ and the Enumerable.Aggregate method to join strings from a collection. Esse método combina as cadeias de caracteres de origem usando uma expressão lambda.This method combines the source strings using a lambda expression. A expressão lambda faz o trabalho de adicionar cada cadeia de caracteres ao acúmulo existente.The lambda expression does the work to add each string to the existing accumulation. O exemplo a seguir combina uma matriz de palavras, adicionando um espaço entre cada palavra na matriz:The following example combines an array of words by adding a space between each word in the array:

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);

Você pode experimentar estes exemplos examinando o código em nosso repositório GitHub.You can try these samples by looking at the code in our GitHub repository. Ou então, você pode baixar os exemplos como um arquivo zip.Or you can download the samples as a zip file.

Consulte tambémSee also