Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Este artigo faz parte da seção Conceitos Básicos para desenvolvedores que já conhecem pelo menos uma linguagem de programação e estão aprendendo C#. Se você é novo em programação, comece com os tutoriais Comece agora.
Vindo de outro idioma? A concatenação em C# com + é paralela à de Java e JavaScript. O C# oferece interpolação de strings ($"{x}"), semelhante aos template literals do JavaScript e às f-strings do Python, como a forma preferida de criar strings a partir de variáveis. Para criar strings em um loop, o C# oferece StringBuilder, assim como o StringBuilder do Java.
Concatenação acrescenta uma cadeia de caracteres ao final de outra para produzir uma nova cadeia de caracteres. O C# oferece várias maneiras de concatenar, e a melhor escolha depende de você estar concatenando um conjunto fixo de valores, uma coleção ou montando uma string aos poucos dentro de um loop.
Concatenar literais de cadeia de caracteres
Quando você concatena literais de cadeia de caracteres ou constantes com +, o compilador os combina em tempo de compilação. Dividir um literal longo em várias linhas melhora a legibilidade na origem sem qualquer custo de tempo de execução:
// The compiler joins adjacent string literals at compile time,
// so splitting a long literal across lines has no run-time cost.
string message =
"This is the first sentence of a longer message. " +
"This is the second sentence. " +
"This is the third and final sentence.";
Console.WriteLine(message);
// => This is the first sentence of a longer message. This is the second sentence. This is the third and final sentence.
Use os operadores + e +=
Para combinar variáveis de cadeia de caracteres, use o + operador para produzir uma nova cadeia de caracteres ou += para acrescentar a uma existente. O + operador é intuitivo e o compilador copia o conteúdo da cadeia de caracteres apenas uma vez, mesmo quando você encadeia vários operadores em uma única expressão:
string name = "Alex";
string day = "Monday";
// Use + to build a string from variables and literals.
string greeting = "Hello " + name + ". Today is " + day + ".";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.
// Use += to append to an existing string.
greeting += " How are you today?";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday. How are you today?
Note
Na concatenação de cadeia de caracteres, C# trata uma null cadeia de caracteres da mesma forma que uma cadeia de caracteres vazia, portanto, concatenar null não adiciona nada ao resultado.
Use interpolação de cadeia de caracteres
Para inserir expressões calculadas em uma cadeia de caracteres, prefira interpolação de cadeias de caracteres em vez de espaços reservados posicionais, como os tokens {0} e {1} que String.Format herda da formatação estilo C. A interpolação insere cada expressão diretamente no texto onde seu valor aparece, de modo que a string resultante permanece legível e você não corre o risco de associar um argumento à posição errada:
string name = "Alex";
string day = "Monday";
// String interpolation reads better than a chain of + operators.
string greeting = $"Hello {name}. Today is {day}.";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.
Quando cada expressão interpolada é uma cadeia de caracteres constante, você pode atribuir o resultado interpolado a uma const cadeia de caracteres.
Ingressar em uma coleção de cadeias de caracteres
Para combinar os elementos de uma coleção, use String.Concat para juntá-los sem separador ou String.Join colocar um separador entre cada elemento:
string[] words = ["The", "quick", "brown", "fox"];
// Concat joins the sequence with no separator.
string runTogether = string.Concat(words);
Console.WriteLine(runTogether);
// => Thequickbrownfox
// Join places a separator between each element.
string sentence = string.Join(' ', words);
Console.WriteLine(sentence);
// => The quick brown fox
string.Join é a ferramenta certa sempre que você precisa de saída delimitada, como valores separados por vírgulas ou palavras separadas por espaço.
Criar uma cadeia de caracteres em um loop
Cada operação + ou += cria uma nova cadeia de caracteres, pois as cadeias de caracteres são imutáveis. Quando você adiciona muitos elementos em um loop, essa alocação vai se acumulando. A classe StringBuilder cria o resultado em um só buffer:
// StringBuilder builds a string in place, which suits loops
// that append many pieces.
var builder = new StringBuilder();
for (int i = 1; i <= 3; i++)
{
builder.AppendLine($"Line {i}");
}
Console.Write(builder.ToString());
// => Line 1
// => Line 2
// => Line 3
Opte por StringBuilder quando o número de elementos for grande ou desconhecido em tempo de compilação. Para um conjunto fixo e pequeno de valores, o operador + e a interpolação de strings são mais claros. Para obter diretrizes sobre quando cada abordagem tem o melhor desempenho, consulte The string e StringBuilder types.