Como: concatenar várias seqüências de caracteres (guia de programação do C#)

Concatenação de é o processo de anexar uma seqüência de caracteres ao final de outra seqüência.Quando você concatenar seqüências literais ou constantes de seqüência de caracteres usando o + operador, o compilador cria uma única seqüência.Não ocorre a concatenação de tempo de execução.No entanto, as variáveis de seqüência de caracteres podem ser concatenadas somente em tempo de execução.Nesse caso, você deve compreender as implicações de desempenho de diversas abordagens.

Exemplo

O exemplo a seguir mostra como dividir uma longa seqüência de caracteres literal em cadeias de caracteres menores para melhorar a legibilidade do código de origem.As partes a seguir será concatenada em uma única seqüência em tempo de compilação.Lá é não executar custo independentemente do número de seqüências de caracteres envolvidos de desempenho do tempo.

static void Main()
{
    // 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);
}

Para concatenar variáveis de seqüência de caracteres, você pode usar o + ou += operadores, ou o String.Concat, String.Format ou StringBuilder.Append métodos.O + operador é fácil de usar e torna o código intuitivo.Mesmo que você use vários + operadores em uma instrução, o conteúdo de seqüência de caracteres é copiado somente uma vez.Mas se você repetir esta operação várias vezes, por exemplo em um loop, ele pode causar problemas de eficiência.Por exemplo, observe o seguinte código:

static void Main(string[] args)
{
    // To run this program, provide a command line string.
    // In Visual Studio, see Project > Properties > Debug.
    string userName = args[0];
    string date = DateTime.Today.ToShortDateString();

    // Use the + and += operators for one-time concatenations.
    string str = "Hello " + userName + ". Today is " + date + ".";
    System.Console.WriteLine(str);

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

    // Keep the console window open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();
}

// Example output: 
//  Hello Alexander. Today is 1/22/2008.
//  Hello Alexander. Today is 1/22/2008. How are you today?
//  Press any key to exit.
//
ObservaçãoObservação

Em operações de concatenação de seqüência de caracteres, o compilador C# trata uma seqüência nula a mesma como uma seqüência vazia, mas ele não converte o valor da seqüência de caracteres nula original.

Se você não estiver concatenando grandes números de seqüências de caracteres (por exemplo, em um loop), o custo de desempenho desse código provavelmente não é significativo.O mesmo vale para o String.Concat e String.Format métodos.

No entanto, quando o desempenho for importante, você deve sempre usar o StringBuilder classe concatenar cadeias de caracteres.O seguinte código usa a Append método da StringBuilder classe concatenar cadeias de caracteres sem o efeito de encadeamento da + operador.

class StringBuilderTest
{
    static void Main()
    {
        string text = null;

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

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
// Output:
// 0
// 1
// 2
// 3
// 4
// ...
//

Consulte também

Referência

String

StringBuilder

Conceitos

Guia de programação do C#

Outros recursos

Seqüências de caracteres (guia de programação do C#)