Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Sugestão
Este artigo faz parte da secção Fundamentos para programadores que já conhecem pelo menos uma linguagem de programação e estão a aprender C#. Se és novo na programação, começa primeiro pelos tutoriais para começar .
Vem de outra língua? A concatenação em C# com + é semelhante à de Java e JavaScript. C# adiciona interpolação de strings ($"{x}"), semelhante aos literais de modelo do JavaScript e às f-strings do Python, como a forma preferida de construir strings a partir de variáveis. Para construir cadeias em ciclo, C# oferece StringBuilder, muito semelhante ao StringBuilderdo Java .
A concatenação adiciona uma cadeia à extremidade de outra para produzir uma nova cadeia. C# dá-te várias formas de concatenar, e a melhor escolha depende se estás a juntar um conjunto fixo de valores ou uma coleção, ou se estás a construir uma string peça a peça num ciclo.
Concatenar literais de cadeias de caracteres
Quando se concatenam literais ou constantes de cadeias de caracteres com +, o compilador concatena-os em tempo de compilação. Dividir um literal longo por várias linhas melhora a legibilidade no código-fonte sem qualquer custo em 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.
Utilizar os operadores + e +=
Para combinar variáveis de cadeia, use o + operador para produzir uma nova cadeia ou += para adicionar a uma já existente. O + operador é intuitivo, e o compilador copia o conteúdo da cadeia apenas uma vez, mesmo quando encadeia vários operadores numa ú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?
Observação
Na concatenação de cadeias, C# trata uma null cadeia da mesma forma que uma cadeia vazia, por isso a concatenação null não acrescenta nada ao resultado.
Usar interpolação de cordas
Para incorporar expressões computadas numa string, prefira interpolação de strings em vez de marcadores posicionais, como os tokens {0} e {1}, que String.Format herda da formatação ao estilo C. A interpolação coloca cada expressão em linha onde o seu valor aparece, para que a cadeia de resultados se mantenha legível e não se possa desalinhar um argumento:
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 toda expressão interpolada é ela própria uma cadeia constante, pode-se atribuir o resultado interpolado a uma const cadeia.
Junte-se a uma coleção de cadeias de caracteres
Para combinar os elementos de uma coleção, use String.Concat para os unir sem separador, ou String.Join para 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 precisa de saída delimitada, como valores separados por vírgulas ou palavras separadas por espaço.
Constrói uma corda num laço
Cada operação + ou += cria uma nova string, uma vez que as strings são imutáveis. Quando se acrescentam muitos fragmentos num ciclo, essa alocação vai-se acumulando. A StringBuilder classe constrói o resultado num único 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
Procure StringBuilder quando o número de peças for grande ou desconhecido no momento da compilação. Para um conjunto fixo e pequeno de valores, o operador + e a interpolação de cadeias de caracteres são mais claros. Para orientações sobre quando cada abordagem funciona melhor, veja Os tipos string e StringBuilder.